9

我唯一可以使用 python omnicomplete 的是系统模块。对于我当前正在处理的站点包或模块中的模块,我没有得到任何帮助。

4

6 回答 6

3

一旦我为我的一个站点包生成了 ctags,它就开始为那个包工作——所以我猜测,omnicomplete 函数依赖于非 sys 模块的 ctags。

编辑:根本不是真的。

这就是问题所在——我的测试很差——全能 WAS 为我的项目的一部分工作,而不是大部分。

问题是我正在开发一个 django 项目,为了导入 django.db,您需要设置一个环境变量。由于我无法导入 django.db,因此从 django.db 继承的任何类或导入从 django.db 继承的类的任何模块都不会完成。

于 2008-10-17T18:19:55.060 回答
2

今晚刚刚在 Python reddit 上遇到了这个问题:PySmell。看起来像你在找什么。

PySmell 是一个 python IDE 完成助手。

它尝试静态分析 Python 源代码,而不执行它,并生成有关 IDE 工具可以使用的项目结构的信息。

于 2008-10-14T00:55:19.743 回答
2

我在我的 PYTHONPATH 或站点包中完成了我自己的模块。我不确定您使用的是什么版本的 pythoncomplete.vim 脚本,但您可能需要确保它是最新的。

编辑:这是我在系统上看到的一些示例......

这个文件(mymodule.py),我把它放在 PYTHONPATH 的一个目录中,然后放在 site-packages 中。两次我都能得到下面的截图。

myvar = 'test'

def myfunction(foo='test'):
    pass

class MyClass(object):
    pass
于 2008-10-14T14:35:18.747 回答
2

虽然重要的是要注意您必须正确设置PYTHONPATH环境变量,但根据前面的答案,Vim 中有一个值得注意的错误,它会在导入失败时阻止omnicompletion 工作。从 Vim 7.2.79 开始,这个错误还没有被修复。

于 2009-05-12T05:26:38.110 回答
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 开始工作。

于 2009-07-09T15:19:58.820 回答
0

我认为你在pydiction脚本之后。它使您可以将自己的东西和站点包添加到omni complete。

当您使用它时,将以下内容添加到您的 python.vim 文件中...

 set iskeyword+=.

这将让您自动完成包功能,例如,如果您输入...

 os.path.

然后 [CTRL][N],您将获得 os.path 的函数列表。

于 2008-10-14T07:12:40.747 回答