有没有办法让python omnicomplete与vim中的非系统模块一起使用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法让python omnicomplete与vim中的非系统模块一起使用?相关的知识,希望对你有一定的参考价值。
我唯一可以使用python omnicomplete来处理的是系统模块。我现在正在处理的网站包或模块中的模块没有得到任何帮助。
我在PYTHONPATH或site-packages中完成了我自己的模块。我不确定您使用的是哪个版本的pythoncomplete.vim脚本,但您可能希望确保它是最新版本。
编辑:以下是我在系统中看到的一些例子......
这个文件(mymodule.py),我puth在PYTHONPATH的一个目录中,然后在site-packages中。两次我都能得到下面的截图。
myvar = 'test'
def myfunction(foo='test'):
pass
class MyClass(object):
pass
一旦我为我的一个站点包生成了ctags,它就开始为该包开始工作 - 所以我猜测omnicomplete函数依赖于非sys模块的ctags。
编辑:根本不是真的。
这是问题 - 我的测试不好 - omnicomplete WAS为我的项目的一部分工作,而不是大部分。
问题是我正在开发一个django项目,为了导入django.db,你需要设置一个环境变量。由于我无法导入django.db,任何继承自django.db的类或任何导入从django.db继承的类的模块都无法完成。
今晚在Python reddit上遇到过这个问题:PySmell。看起来像你在寻找什么。
PySmell是一个python IDE完成助手。
它尝试静态分析Python源代码,而不执行它,并生成有关IDE工具可以使用的项目结构的信息。
虽然重要的是要注意你必须正确设置你的PYTHONPATH
环境变量,根据前面的答案,有一个值得注意的bug in Vim which prevents omnicompletion from working when an import fails。从Vim 7.2.79开始,这个bug还没有修复。
故障排除提示:验证您尝试全向完成的模块是否可由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完成。
在你的时候,将以下内容添加到python.vim文件中......
set iskeyword+=.
这将让您自动完成包功能,例如如果你输入......
os.path.
然后[CTRL] [N],您将获得os.path的函数列表。
以上是关于有没有办法让python omnicomplete与vim中的非系统模块一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
Vim 中的 Omnicomplete 可以用于 python/3 完整的函数名称还是方法?