VIM的自省代码补全?...或其他具备此功能的轻量级编辑器?

7 投票
3 回答
1971 浏览
提问于 2025-04-17 01:55

我在网上到处找,想找到一种方法让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 个回答

1

我对在Vim中使用Python的各种自动补全选项不是很了解。不过,如果你想自己动手做一个,建议你先研究一下现有的补全工具,并进行一些修改,比如这个:

http://www.vim.org/scripts/script.php?script_id=1542

另外,如果你的自动补全功能只是列出当前文件中的单词,那说明你没有正确设置Python特定的补全功能……我不太确定专门的Python补全工具有多好,但它们确实可以根据你当前文件以外的Python代码进行补全……

4

Ctrln 是插入补全的快捷键。

Ctrlx Ctrlo 是全能补全的快捷键。

我把全能补全的快捷键改成了 CtrlSpace

inoremap <C-Space> <C-x><C-o>

你也可以试试 SuperTab

7

不,全面补全功能正是你所需要的。

你现在使用的是 <C-n>,而不是 <C-x><C-o>

  • <C-n><C-p> 可以用光标后面和前面的单词来补全
  • <C-x><C-o> 可以补全方法或属性的名称

在你链接的文章中有详细解释:

在V7版本中,VIM引入了全面补全功能——只要配置好识别Python(如果没有,这个功能只需要安装一个插件),按下Ctrl+x Ctrl+o就会像其他开发环境一样弹出一个下拉对话框——甚至整个Pydoc都会在一个分屏窗口中显示。

撰写回答