令人惊讶的是,当您熟悉vim时,您可以比Eclipse之类的标准IDE更快地编写代码。但我真正想念的一件事是代码完成,特别是对于长变量名和函数。
有没有办法在vim中为Perl启用代码完成?
答案 0 :(得分:30)
Ctrl - P (获取上一场比赛)和 Ctrl - N (下一场比赛)是亲切的伪代码完成他们基本上搜索你正在编辑的文件(Backwards for Ctrl - P ,Forwards for Ctrl - N )和任何打开的缓冲区,如果你在TAG文件中使用TAGS中的任何内容),那么以你输入的内容开头的单词并添加一个下拉列表。它对变量和函数名称的效果非常好,即使它不是智能感知。通常我使用 Ctrl - P 作为我正在寻找的变量或函数通常落后于代码。此外,如果您保持Vim的相同副本打开,它将搜索您之前打开的文件。
答案 1 :(得分:9)
Vim 7支持全方位完成。
例如,我在我的vimrc中有这个
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
然后,当我在插入模式下按 Ctrl-x Ctrl-o 时,我会看到一个自动完成可能性的下拉列表。
这是一个omnicfunc for perl。不知道它有多好用。
答案 2 :(得分:7)
嗯,Vim的通用完成机制非常好,只是在插入模式下使用Ctrl-N。此外,线路完成非常方便,使用C-x C-l。
另请查看此vim script for perl。
答案 3 :(得分:5)
如果将以下内容添加到〜/ .vim / ftplugin / perl.vim文件中,标准CTRL-N
和CTRL-P
的效果会更好:
设置iskeyword + =:
然后它会自动完成模块名称等。
答案 4 :(得分:4)
其中一个答案中的.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技巧in this thread at Perlmonks - 它们链接到更多线程并有更多自定义。
答案 5 :(得分:3)
控制 + 名词
Perl Hacks一书中解释了这一点,以及如何完成包。强烈推荐。
答案 6 :(得分:3)
你应该看一下SuperTab插件: http://www.vim.org/scripts/script.php?script_id=1643 它允许你使用tab和shift-tab而不是^ N和^ P来完成(OmniCompletion或常规完成)。
答案 7 :(得分:3)