2011-08-21 97 views
40

我正在尝试在Vim中加入自动完成功能。我已经使用了Vim的omnicompletion以及Pydiction。但在这两种情况下,这弹出消息:Python的Vim自动完成功能

全能补全(^ o^N^P)未找到模式

我已经试过Vim's Omnicompletion with Python just doesn't work。但这没有帮助。有没有解决方法?

+2

您是否看到此链接? http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/ – Efazati

+1

该文件是否被检测为python文件?打开它并运行':echo&ft'。如果这没有返回“python”,那么尝试在你的vimrc上添加'filetype plugin'并且再次尝试所有这些。 –

回答

45

尝试Jedi!有一个Vim插件https://github.com/davidhalter/jedi-vim

它在Vim中的工作比其他任何Python都好。它甚至支持重命名,转到等等。最好的部分可能是它真的试图理解你的代码(装饰器,生成器等等。请看功能列表)。

+2

我试过这个,但我唯一得到的是数百个错误。 – pfnuesel

+1

那么我需要知道错误和':ver'。如果你没有安装+ python的vim(例如某些windows vim版本),可能会发生这种情况。 –

+0

错误: Vim:捕获致命信号SEGV Vim:完成。 分割错误 – pfnuesel

6

我试过pydiction(没有为我工作)和正常omnicompletion(太有限)。我按照建议看了Jedi,但发现设置起来太复杂。我发现python-mode,这到底能满足我的需求。谢谢@klen

+0

这是为我工作的那个。其他工具太复杂,无法安装。 – max

0

我在我的Mac上使用带有+ python的MacPorts vim进入了这个界面。问题是MacPorts vim只能用+ python绑定到python 2.5,而我的扩展是安装在python 2.7下的。使用pip-2.5安装扩展解决了它。

4

AFAIK有三种选择,各有其优缺点:

  1. youcompleteme:不友好的安装,但如果你设法得到它的工作工作良好。但是python3不支持
  2. jedi-vim:最酷的名字,但打破了你的undo history
  3. python-mode做了很多更多的自动完成:折叠,语法检查,突出显示。就我个人而言,我更喜欢做好一件事的脚本,因为它们更容易管理(和替换)。与其他两个选项不同,它使用rope而不是jedi来自动完成。

Python 3和撤消历史记录(gundo!)对我来说是必须的,所以选项1和2都没有了。

+0

感谢您指出缺点,这使得选择更容易,因为我分享关于Python 3和撤消的意见。 – Zelphir

+0

似乎绳子不支持Python 3(https://github.com/python-rope/rope/issues/57)?如何使用Python模式和绳子的自动完成功能?谢谢。 – Chad

2

在这个时候youcompleteme也做Python3。