有没有办法让Vim中的Python omnicomplete与非系统模块一起工作?
我发现Python的自动补全功能只能在系统自带的模块上正常工作。对于我在site-packages里的模块或者我现在正在写的模块,自动补全一点帮助都没有。
6 个回答
2
今晚在Python的reddit上看到这个:PySmell。看起来正是你需要的东西。
PySmell是一个帮助Python编程环境(IDE)自动补全的工具。
它会在不运行代码的情况下,静态分析Python源代码,并生成关于项目结构的信息,这些信息可以被编程环境工具使用。
3
我之前为我的一个网站包生成了ctags,结果这个包就开始正常工作了。所以我猜测,omnicomplete这个功能在处理非系统模块时是依赖于ctags的。
补充说明:这根本不是真的。
问题出在我自己测试不够仔细——其实omnicomplete在我项目的某些部分是有效的,只是大部分地方不行。
问题是我在做一个django项目,而要导入django.db,你需要设置一个环境变量。因为我无法导入django.db,所以任何从django.db继承的类,或者导入了从django.db继承的类的模块,都无法完成自动补全。
2
我在自己的PYTHONPATH或者site-packages里得到了模块的自动补全。我不太确定你使用的pythoncomplete.vim脚本是什么版本,但你可能需要确认一下是不是最新的。
编辑:这里是我在系统上看到的一些例子……
这个文件(mymodule.py),我放在了PYTHONPATH里的一个目录下,然后又放在了site-packages里。两次我都能得到下面的截图。
myvar = 'test'
def myfunction(foo='test'):
pass
class MyClass(object):
pass