有什么方法可以在vim中为Perl启用代码完成吗?
出乎意料的是,随着我们对vim的熟练掌握,我们可以比标准的IDE(例如Eclipse)更快地进行编码。但是我真正想念的一件事是代码完成,尤其是对于长变量名和函数。
有什么方法可以在vim中为Perl启用代码完成功能吗?
解决方案
回答
Ctrl-P(获取上一个匹配项)和Ctrl-N(获取下一个匹配项)都是伪代码完成。他们基本上是在文件(搜索" Ctrl"至" P",向后搜索" Ctrl"至" N")中搜索正在编辑的单词(以及任何打开的缓冲区,如果我们在TAG文件中使用TAGS,则搜索)。从我们输入的内容开始,然后添加一个下拉列表。即使不是智能感知,它对于变量和函数名称也能出奇地好。通常我使用Ctrl-P作为变量或者函数,通常在代码后面。另外,如果我们保持打开同一个Vim副本,它将搜索我们以前打开的文件。
回答
好吧,Vim的通用完成机制非常好,仅在插入模式下使用Ctrl-N即可。同样,使用C-x C-1可以很方便地完成生产线。
还可以检查一下vim脚本中的perl。
回答
Vim 7支持全能完成。
例如,我的vimrc中有这个
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
然后,当我在"插入"模式下按Ctrl-x Ctrl-o时,会出现一个自动完成可能性的下拉列表。
这是perl的omnicfunc。但不知道它的运作情况如何。
回答
Ctrl + N
Perl Hacks一书中对此进行了说明,以及如何完成软件包。强烈推荐。
回答
我们应该看一下SuperTab插件:
http://www.vim.org/scripts/script.php?script_id=1643
它让我们使用tab和shift-tab而不是^ N和^ P来完成完成(OmniCompletion或者常规完成)。
回答
其他答案之一中的.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
我们可以在Perlmonks的该线程中找到它以及大量其他vim技巧-它们链接到具有更多自定义项的更多线程。
回答
如果在〜/ .vim / ftplugin / perl.vim文件中添加以下内容,则标准的CTRL-N和CTRL-P会更好地工作:
set iskeyword+=:
然后它将自动完成模块名称等。
回答
https://github.com/c9s/perlomni.vim