使用VIM完成内省代码? ...或其他具有此功能的轻量级编辑器?

时间:2011-09-09 19:30:03

标签: python vim ide autocomplete code-completion

我一直在网上试图找到一种方法让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(你要找的工作),然后过滤输出!这不是那么难! (我想你也必须阅读你正在编辑的文件,并过滤掉那个以注意名称的变化......但这就是它!)

说到它会有多容易......如果没有任何已经制作的东西,我正在考虑自己编写脚本!关于如何做的任何指南?

3 个答案:

答案 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单元进行竞争。 。 。 。