6

[更新 06/2013:正如用户 doubleDown 所观察到的,我的术语错误:方便C-pC-n击键不是 全能补全(omnicompletion),而是 关键字补全。我认为 Vim 术语在这里有点不幸:omni是拉丁语 for every,而关键字似乎是一个更受限制的选择。默认的方式C-pC-n工作是完成散文的每个单词,而不仅仅是关键字。这让我觉得他们必须是全能补全,而不仅仅是关键字补全。]

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

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

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

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

所以到目前为止最好的解决方案就是在默认完成中禁用包含文件的使用,方法是说:

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

有什么要补充的吗?

4

3 回答 3

2

You should use perlomni writen by c9s.

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

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

You can see video how to use.

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

for easy way, to complete method, type something and "->", then .

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

my $dt = DateTime->new;

$dt->ye # type <c-x><c-o>, you'll get $dt->year
于 2011-07-14T11:39:28.590 回答
2

如果您想进行更多手术,可以使用:

autocmd FileType perl set complete-=i

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

于 2014-01-25T15:15:51.343 回答
1

我想这个问题真的没有什么比我在我的问题中已经说过的了:

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

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

具有以上所有功能的 Win7 上的 GVim

于 2012-02-14T22:48:14.353 回答