我唯一可以使用 python omnicomplete 的是系统模块。对于我当前正在处理的站点包或模块中的模块,我没有得到任何帮助。
6 回答
一旦我为我的一个站点包生成了 ctags,它就开始为那个包工作——所以我猜测,omnicomplete 函数依赖于非 sys 模块的 ctags。
编辑:根本不是真的。
这就是问题所在——我的测试很差——全能 WAS 为我的项目的一部分工作,而不是大部分。
问题是我正在开发一个 django 项目,为了导入 django.db,您需要设置一个环境变量。由于我无法导入 django.db,因此从 django.db 继承的任何类或导入从 django.db 继承的类的任何模块都不会完成。
今晚刚刚在 Python reddit 上遇到了这个问题:PySmell。看起来像你在找什么。
PySmell 是一个 python IDE 完成助手。
它尝试静态分析 Python 源代码,而不执行它,并生成有关 IDE 工具可以使用的项目结构的信息。
我在我的 PYTHONPATH 或站点包中完成了我自己的模块。我不确定您使用的是什么版本的 pythoncomplete.vim 脚本,但您可能需要确保它是最新的。
编辑:这是我在系统上看到的一些示例......
这个文件(mymodule.py),我把它放在 PYTHONPATH 的一个目录中,然后放在 site-packages 中。两次我都能得到下面的截图。
myvar = 'test'
def myfunction(foo='test'):
pass
class MyClass(object):
pass
虽然重要的是要注意您必须正确设置PYTHONPATH
环境变量,但根据前面的答案,Vim 中有一个值得注意的错误,它会在导入失败时阻止omnicompletion 工作。从 Vim 7.2.79 开始,这个错误还没有被修复。
故障排除提示:验证您尝试全方位完成的模块是否可以通过 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 开始工作。
我认为你在pydiction脚本之后。它使您可以将自己的东西和站点包添加到omni complete。
当您使用它时,将以下内容添加到您的 python.vim 文件中...
set iskeyword+=.
这将让您自动完成包功能,例如,如果您输入...
os.path.
然后 [CTRL][N],您将获得 os.path 的函数列表。