I've searched around for an hour, both on Stack Overflow and elsewhere. Alas! Please help. Vim's omnicompletion just doesn't work.
I have Vim 7.2 compiled with Python support.
filetype plugin on
is in my.vimrc
.When a
.py
file is open,:echo &omnifunc
printspythoncomplete#Complete
.I'm working with a large project and I have a
tags
file generated withexhuberant-ctags
. It's in Vim'sctags
path. I can test it by typing ^] on a symbol and I'm then taken to the symbols' definition.Update 1: All of my project's code is in the python-in-Vim's path. I can
:python import myproject
successfully.
Now, anywhere I try C-x C-o, all I get is:
-- Omni completion (^O^N^P) Pattern not found
What am I doing wrong?
Update 2: When I type C-x C-o C-n at the module-level, Vim displays a completion popup with a few module-level constants from other modules in my project. But it's only constants (symbols capital letters) and the completion still doesn't work anywhere else.
Update 3: I've found that C-x C-o at the top of the file starts some kind of omnicompletion, and completion for pprint.
brings up the menu and quick-reference of everything in the pprint
module. However, none of my own module's imports are being completed.
Update 4, one year later: I gave up and learned Emacs. I have been to the dark side, the mystical land of intrigue and spice, and I say to thee that I have found The Way.
Update 5, two years later: I went back to Vim. Emacs is beautiful, but even after 1.5 years of Emacs, I'm still faster at getting work done in Vim. I've stopped writing Python for now, however, and can't test how well these suggestions work.
Having updated to Fedora 16 (but still compiling vim from source), omni completion stopped working with the same message as above. I "fixed" it by re-maping the keys.
in
~/.vimrc
and now it works again.Sounds like the questioner has long since gone to the dark side*, but for what it's worth I've just had this symptom, and in my case the cause was that a module I was using relied on Python 2.7 but my version of Vim was compiled with Python 2.5.
To diagnose I tried
:python import mymodule
, which failed with an error about importing a dependent module. Then:python import dependentmodule
which failed with the next step in the chain. And so on & so on, until it failed trying to import a system module that was new since Python 2.7. Problem found.To solve, I just did
sudo port install vim +python27
. But that's for OSX. YMMV.(* I'm kidding. Emacs users are our friends. It's the people programming in Notepad we all have to save...)
Since you were prudent and made certain your code is reachable by the PYTHONPATH, per codeape's suggestion, is there a possibility that you are running into the
import
bug for Vim Python omni-complete? This bug still exists as of Vim 7.2.245.Essentially, if any import statement fails in the file you are working in, regardless of whether it's wrapped in a
Try-Except
clause, it will completely break omni-completion. It should be fairly easy to check for this, since most imports occur at the very beginning of the file.If you do decide that this bug is the cause of your troubles, your options include:
import
statements that fail