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

时间:2011-07-04 09:38:40

标签: perl vim omnicomplete

[2013年6月更新:当观察到用户doubleDown时,我的术语有误:方便的C-pC-n按键 omni 完成(omnicompletion), 关键字完成。我认为Vim术语在某种程度上是不幸的: omni 每个的拉丁语,而关键字似乎是一个更受限制的选择。 C-pC-n默认工作方式是完成散文的每个单词,而不仅仅是关键字。这使我认为他们必须 omni 完成,而不仅仅是关键字完成。]

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

Vim keyword omnicompletion (by default bound to C-p and C-n in edit mode)是一个穷人的智力感知,根据我的经验几乎一样好。它在缓冲区中搜索匹配的字符串。

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

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

因此,到目前为止,最好的解决方案只是通过说:

来禁用默认完成中包含文件的使用
:set complete-=i    # remedy
:help 'complete'    # documentation

要添加什么?

3 个答案:

答案 0 :(得分:2)

你应该使用c9s写的perlomni。

https://github.com/c9s/perlomni.vim

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

您可以看到视频的使用方法。

http://www.youtube.com/watch?v=hZ7871WcIv0

方便,完成方法,键入内容和“ - >”,然后。

#!perl
use strict;
use warnings;
use DateTime;

my $dt = DateTime->new;

$dt->ye # type <c-x><c-o>, you'll get $dt->year

答案 1 :(得分:2)

如果您想要多做一些手术,可以使用:

autocmd FileType perl set complete-=i

这样你就只会影响perl代码的行为。

答案 2 :(得分:1)

我想这个问题真的没有我在我的问题中所说的那样了:

:set complete-=i    # remedy
:help 'complete'    # documentation

为了给这个多余的答案添加一些Vim新闻,我最近加了我的Vim配置(主要是在Windows上使用GVim),有一个很好的字体和一些很好的插件:

GVim on Win7 with all of the above features