如何为Perl文件驯服Vim关键字(非omni)完成?

Lum*_*umi 6 vim perl omnicomplete

[2013年6月更新:当观察到用户doubleDown时,我的术语错误:方便C-pC-n击键不是 omn​​i完成(omnicompletion),而是 关键字完成.我觉得Vim的术语是有点不幸在这里:是拉丁文的每一个,而关键词似乎更受限制的选择.默认情况下,方法C-pC-n工作是完成散文的每个单词,而不仅仅是关键词.这让我觉得他们一定是完成,而不仅仅是关键字完成.]

嗯... :-) ...只需输入我的问题标题,在类似标题的问题目录中出现了一个非常有效的答案.(这只是表明这个网站有多好!)无论如何我都会问这个问题 - 也许有人在商店里有一个更令人满意的答案......所以这里有:

Vim的关键字全方位完成(默认绑定到C-pC-n在编辑模式下)是一个穷人的智能感知,在我的经验是几乎一样好.它在缓冲区中搜索匹配的字符串.

但是,一些文件类型脚本通过使用关键字omn​​i completion执行递归搜索包含文件来超越顶部.(更新:搜索包含的文件实际上是默认的,:help 'complete'从Vim 7.3 可以看出;它只是在一些文件类型中,包含了很多东西,导致速度慢,可能因次优算法而加剧.)所以对于Perl脚本,它将开始搜索模块列表.递归.这可以很快退化成一些严肃的扫描,你知道,磁盘I/O和所有那些丑陋的东西.

因此,我宁愿不使用该功能,因为我不得不通过使用中断搜索来获得时间和便利C-c,这会在输出中留下一些随机字符串,然后我必须删除它.

所以到目前为止最好的解决方案就是通过以下方式禁用默认完成中包含文件的使用:

:set complete-=i    # remedy
:help 'complete'    # documentation
Run Code Online (Sandbox Code Playgroud)

有什么要补充的吗?

afo*_*ney 2

如果您想要更加手术化,您可以使用:

autocmd FileType perl set complete-=i
Run Code Online (Sandbox Code Playgroud)

这样您只会影响 Perl 代码的行为。