用于Python的Vim自动完成

tal*_*oid 50 python vim

我想在Vim中加入自动完成功能.我使用了Vim以及Pydiction的全方位.但在这两种情况下都会弹出以下消息:

Omni完成(^ O ^ N ^ P)未找到模式

用Python试过Vim的Omnicompletion是行不通的.但这没有帮助.有解决方法吗?

Dav*_*ter 57

试试绝地!https://github.com/davidhalter/jedi-vim上有一个Vim插件.

它在Vim中比Python的其他任何东西都要好得多.它甚至支持重命名,转到等.最好的部分可能是它真的试图理解你的代码(装饰器,生成器等等.只需看一下功能列表).

  • 我试过这个,但我唯一得到的就是数百个错误. (3认同)
  • 是的,我很抱歉。但这是一个 VIM 问题(旧版本):https://github.com/davidhalter/jedi-vim/issues/27 (2认同)

Xua*_*uan 13

如果你想要python完成以及其他语言,这可能是一个很好的选择.https://github.com/Valloric/YouCompleteMe

python完成jedi与jedi-vim相同.


Tor*_*cht 6

我试过pydiction(对我来说不起作用)和正常的omnicompletion(太有限)了.我按照建议调查了绝地,但发现设置太复杂了.我找到了python-mode,最终满足了我的需求.谢谢@klen.


Raf*_*osa 6

AFAIK有三种选择,每种都有其缺点:

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

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

  • 这不再准确了。YouCompleteMe 现在支持 Python 3。 (4认同)
  • 感谢您指出缺点,这使得选择变得更加容易,因为我分享了关于 Python 3 和撤消的观点。 (2认同)