有没有办法让python omnicomplete与vim中的非系统模块一起使用?

问题描述 投票:9回答:6

我唯一可以使用python omnicomplete来处理的是系统模块。我现在正在处理的网站包或模块中的模块没有得到任何帮助。

python vim omnicomplete
6个回答
2
投票

我在PYTHONPATH或site-packages中完成了我自己的模块。我不确定您使用的是哪个版本的pythoncomplete.vim脚本,但您可能希望确保它是最新版本。

编辑:以下是我在系统中看到的一些例子......

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

myvar = 'test'

def myfunction(foo='test'):
    pass

class MyClass(object):
    pass

3
投票

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

编辑:根本不是真的。

这是问题 - 我的测试不好 - omnicomplete WAS为我的项目的一部分工作,而不是大部分。

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


2
投票

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

PySmell是一个python IDE完成助手。

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


2
投票

虽然重要的是要注意你必须正确设置你的PYTHONPATH环境变量,根据前面的答案,有一个值得注意的bug in Vim which prevents omnicompletion from working when an import fails。从Vim 7.2.79开始,这个bug还没有修复。


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开始工作。


0
投票

我想你的pydiction脚本之后。它允许您将自己的东西和网站包添加到omni完成。

在你的时候,将以下内容添加到python.vim文件中......

 set iskeyword+=.

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

 os.path.

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

© www.soinside.com 2019 - 2024. All rights reserved.