VIM的自省代码补全?...或其他具备此功能的轻量级编辑器?
我在网上到处找,想找到一种方法让VIM有类似PyDev的代码补全功能。看起来这似乎是不可能的!
-我试过使用这个链接里推荐的“全局补全”功能:http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/。
-我还尝试了几个插件来解决这个问题,但都没用。
我需要的“全局补全”功能并不是我想要的。它只是把你正在编辑的文件里的所有单词拿来尝试补全。例如,如果我写:
import numpy
a_single_array = range(100)
np.a#[then I hit cntrl+n to code complete]
它会给出“a_single_array”作为一个可能的补全选项——但这太荒谬了!这根本不是“numpy.a ...”的有效补全。
这里的问题是什么呢?所有的插件只需要在你所在的文件夹里运行一下dir(你想查找的内容),然后过滤输出就行了!这应该不难吧!(我想你还得读取一下你当前编辑的文件,过滤掉那些名字变动的部分……但就这些了!)
说到这件事有多简单……如果没有现成的解决方案,我在考虑自己写个脚本!有没有什么指南可以教我怎么做?
3 个回答
我对在Vim中使用Python的各种自动补全选项不是很了解。不过,如果你想自己动手做一个,建议你先研究一下现有的补全工具,并进行一些修改,比如这个:
http://www.vim.org/scripts/script.php?script_id=1542
另外,如果你的自动补全功能只是列出当前文件中的单词,那说明你没有正确设置Python特定的补全功能……我不太确定专门的Python补全工具有多好,但它们确实可以根据你当前文件以外的Python代码进行补全……
Ctrln 是插入补全的快捷键。
Ctrlx Ctrlo 是全能补全的快捷键。
我把全能补全的快捷键改成了 CtrlSpace:
inoremap <C-Space> <C-x><C-o>
你也可以试试 SuperTab。
不,全面补全功能正是你所需要的。
你现在使用的是 <C-n>
,而不是 <C-x><C-o>
:
- 按
<C-n>
和<C-p>
可以用光标后面和前面的单词来补全 - 按
<C-x><C-o>
可以补全方法或属性的名称
在你链接的文章中有详细解释:
在V7版本中,VIM引入了全面补全功能——只要配置好识别Python(如果没有,这个功能只需要安装一个插件),按下Ctrl+x Ctrl+o就会像其他开发环境一样弹出一个下拉对话框——甚至整个Pydoc都会在一个分屏窗口中显示。