我唯一可以使用python omnicomplete来处理的是系统模块。我现在正在处理的网站包或模块中的模块没有任何帮助。
答案 0 :(得分:3)
一旦我为我的某个网站包生成了ctags,它就开始为该软件包工作 - 所以我猜测omnicomplete函数依赖于非sys模块的ctags。
编辑:完全没有。
这就是问题 - 我的测试不好 - omnicomplete WAS正在为我的项目的某些部分工作,而不是大部分工作。
问题在于我正在开发一个django项目,为了导入django.db,你需要设置一个环境变量。由于我无法导入django.db,所以从django.db继承的任何类或任何导入从django.db继承的类的模块都无法完成。
答案 1 :(得分:2)
今晚在Python reddit上遇到过这个问题:PySmell。看起来像你在寻找什么。
PySmell是一个python IDE完成助手。
它尝试静态分析Python源代码,而不执行它,并生成有关IDE工具可以使用的项目结构的信息。
答案 2 :(得分:2)
我在PYTHONPATH或site-packages中完成了我自己的模块。我不确定您使用的是哪个版本的pythoncomplete.vim脚本,但您可能希望确保它是最新的。
编辑:以下是我在系统中看到的一些例子......
这个文件(mymodule.py),我把它放在PYTHONPATH的目录中,然后放在site-packages中。两次我都能得到下面的截图。
myvar = 'test'
def myfunction(foo='test'):
pass
class MyClass(object):
pass
答案 3 :(得分:2)
虽然重要的是要注意您必须正确设置PYTHONPATH
环境变量,但根据上一个答案,有一个值得注意的bug in Vim which prevents omnicompletion from working when an import fails。从Vim 7.2.79开始,这个bug还没有修复。
答案 4 :(得分:2)
故障排除提示:验证您尝试全向完成的模块是否可由VIM导入。我有一些VIM不喜欢的语法正确的Python:
:python import {module-name}
Traceback (most recent call last):
File "<string>", line 1, in ?
File "modulename/__init__.py", line 9
class empty_paranthesis():
^
SyntaxError: invalid syntax
案例分析,从我的类定义中删除括号允许VIM导入模块,随后该模块上的OmniComplete开始工作。
答案 5 :(得分:0)
我想你的pydiction脚本之后。它允许您将自己的东西和网站包添加到omni完成。
在你的时候,将以下内容添加到你的python.vim文件......
set iskeyword+=.
这将让您自动完成包裹功能,例如如果你输入......
os.path.
然后[CTRL] [N],您将获得os.path的函数列表。