用于Python的Vim自动完成

时间:2011-08-21 11:42:25

标签: python vim

我正在尝试在Vim中加入自动填充功能。我使用了Vim的omnicompletion以及Pydiction。但在这两种情况下都会弹出这条消息:

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

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

8 个答案:

答案 0 :(得分:55)

试试Jedihttps://github.com/davidhalter/jedi-vim有一个Vim插件。

它比Vim中的Python更好用。它甚至支持重命名,转到等。最好的部分可能是它真正试图理解你的代码(装饰器,生成器等等。只需看一下功能列表)。

答案 1 :(得分:12)

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

python完成的基础与jedi-vim相同。

答案 2 :(得分:6)

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

答案 3 :(得分:6)

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

  1. youcompleteme:对安装不友好,但如果你设法使其正常工作,则效果很好。但是python3 不支持
  2. jedi-vim:最酷的名字,但打破了你的undo history
  3. python-mode执行自动完成功能:折叠,语法检查,突出显示。就个人而言,我更喜欢做一件事的脚本,因为它们更容易管理(和替换)。与其他两个选项不同,它使用rope代替jedi进行自动完成。
  4. Python 3和撤消历史记录(gundo!)对我来说是必须的,因此选项1和2已经完成。

答案 4 :(得分:2)

此时你还完成了Python3。

答案 5 :(得分:1)

我发现与coc.nvim一起python language server是一个不错的选择。

需要花费一些精力进行设置。我对jedi-vim感到沮丧,因为它在完成时总是会冻结vim一点。 coc.nvim之所以不这样做是因为它是异步的,这意味着。它还为您的代码提供了便利。它支持许多其他语言,并且高度可配置。

Python语言服务器使用jedi,因此您获得的效果与从jedi中获得的效果相同。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

使用安装 coc.nvim 包和 CocInstall coc-pyright

如果您使用的是 vim-plug

  1. Plug 'neoclide/coc.nvim'
  2. :PlugInstall
  3. CocInstall coc-pyright