perl - 如何驯服 Perl 文件的 Vim 关键字(不是omni)完成?

标签 perl vim omnicomplete

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

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

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

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

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

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

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

有什么要补充的吗?

最佳答案

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

autocmd FileType perl set complete-=i

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

关于perl - 如何驯服 Perl 文件的 Vim 关键字(不是omni)完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6569683/

相关文章:

database - 在 Perl 模块中部署数据库的好方法?

perl - 解析命令行参数,但不验证

ruby - 通过 Ruby 处理 vim 选择并替换内容

vim - 带有shift-tab的vim中的omnicomplete不起作用?

VIM - 从项目中的多个位置采购标签

perl - 谁能解释为什么 foreach 有效但 map 无效

perl - 为什么我在启动 Catalyst 时收到许多 Moose 警告?

vim - 如何在vim中根据条件执行行串联?

c++ - vim 全能与 vim 智能感知

python - VIM - 未知功能 : pythoncomplete#Complete