令人惊讶的是,当您熟练掌握 vim 后,您的编码速度甚至会比标准 IDE(例如 Eclipse)更快。但我真正怀念的一件事是代码完成,尤其是对于长变量名和函数。

有什么方法可以在 vim 中启用 Perl 的代码完成吗?

有帮助吗?

解决方案

控制键- (获取上一场比赛)和 控制键- (获取下一个匹配)是一种伪代码完成。他们基本上搜索文件(向后搜索 控制键-, 转发为 控制键-)您正在编辑(以及任何打开的缓冲区,如果您在 TAG 文件中使用 TAGS 任何内容)以您正在键入的内容开头的单词,并添加一个下拉列表。即使它不是智能感知,它对于变量和函数名称的效果也出奇的好。一般我用 控制键- 因为我正在寻找的变量或函数通常位于代码后面。此外,如果您保持同一 Vim 副本打开,它会搜索您以前打开过的文件。

其他提示

Vim 7 支持全能补全。

例如,我的 vimrc 中有这个

autocmd FileType php set omnifunc=phpcomplete#CompletePHP

然后,当我按 Ctrl-x Ctrl-o 在插入模式下,我会得到一个自动完成可能性的下拉列表。

这是一个万能函数 对于 Perl. 。但不知道它的效果如何。

好吧,Vim 的通用完成机制出奇的好,只需在插入模式下使用 Ctrl-N 即可。此外,使用 C-x C-l 可以非常方便地完成行补全。

另请查看此 Perl 的 vim 脚本.

标准 CTRL-NCTRL-P 如果将以下内容添加到 ~/.vim/ftplugin/perl.vim 文件中,效果会更好:

设置 iskeyword+=:

然后它会自动完成模块名称等。

其他答案之一中的 .vimrc 剪辑略有错误。要将 Tab 键变成自动完成键,请使用以下代码:

inoremap <tab> <c-r>=InsertTabWrapper()<cr>

function! InsertTabWrapper()
    let col = col('.') - 1
    if !col || getline('.')[col - 1] !~ '\k'
        return "\<tab>"
    else
        return "\<c-p>"
    endif
endfunction

你可以找到这个,以及大量其他 vim 技巧 在 Perlmonks 的这个帖子中--它链接到更多具有更多自定义的线程。

你应该看看 SuperTab 插件:http://www.vim.org/scripts/script.php?script_id=1643它允许您使用 tab 和 shift-tab 而不是 ^N 和 ^P 完成补全(OmniCompletion 或常规补全)。

控制键+

Perl Hacks 书中解释了这一点,以及如何完成包完成。强烈推荐。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top