我一直在网上试图找到一种方法让VIM获得类似于PyDev的代码完成。它似乎不可能!
- 我尝试使用此链接中建议的omnicompletion:http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/。
- 我已经尝试了几个插件来缓解这个问题,但没有工作。
“omnicomplete”功能不是我想要的。它只需要处理您正在处理的文件中的所有单词,并使用它们来尝试完成我正在做的事情。例如,如果我写道:
import numpy
a_single_array = range(100)
np.a#[then I hit cntrl+n to code complete]
它会吐出“a_single_array”作为可能的完成 - 但这是荒谬的!这不是“numpy.a ......”的有效完成。
这是什么问题?所有插件都要做的就是从你所在的文件夹中运行一个dir(你要找的工作),然后过滤输出!这不是那么难! (我想你也必须阅读你正在编辑的文件,并过滤掉那个以注意名称的变化......但这就是它!)
说到它会有多容易......如果没有任何已经制作的东西,我正在考虑自己编写脚本!关于如何做的任何指南?
答案 0 :(得分:7)
不,全方位完成功能正是您所需要的。
您使用<C-n>
代替<C-x><C-o>
:
<C-n>
&amp; <C-p>
完成缓冲区中的单词(分别在光标之前和之后)<C-x><C-o>
以填写方法/属性名称您在链接的文章中对此进行了具体说明:
在V7中,VIM引入了全向完成 - 假设它被配置为识别Python(如果没有,这个功能只是一个插件)Ctrl + x Ctrl + o打开一个下拉对话框,就像任何其他IDE一样 - 甚至整个Pydoc将在分割窗口中显示。
答案 1 :(得分:4)
Ctrl n 是插入完成。
Ctrl x Ctrl o 是全方位完成。
我将omnicomple重新映射到 Ctrl Space :
inoremap <C-Space> <C-x><C-o>
您也可以尝试SuperTab。
答案 2 :(得分:1)
我不知道Vim中Python的各种完成选项。但是如果你想自己动手,建议你研究和修改现有的一个,如下:
http://www.vim.org/scripts/script.php?script_id=1542
此外,如果你所有的omnicompletion正在做的是在当前文件中列出单词,那么你没有为Python特定的完成设置它。 。 。 。不确定专业的Python完成系统有多好,但它们肯定会根据当前文件外部的Python单元进行竞争。 。 。 。