Vim的自动完成速度令人难以忍受

大多数情况下,Vim中的自动完成function对我来说很好,但有时它似乎是扫描当前文件引用的文件,然后变得非常慢,有时需要几秒钟的时间才能将焦点释放给我。

有时候Vim简单地告诉我,这是“扫描”,其他时间是“扫描标签”

我只在Ruby文件中发生过这种情况,而且这种情况大多发生在文件中有需求的情况下。

我的猜测是,这是某种function,检查相关的文件的自动完成选项,但我并不真的需要,并希望更快的自动完成。

正如我在评论中提到的,我也有同样的问题。 这是我发现的;

有一个设置告诉VIM在哪里寻找完成,称为complete

 :set complete complete=.,w,b,u,t,i 

这是默认值。 我的问题是(实际上是)'我',它扫描所有包括的文件。 这里有两个问题,第一个, find所有这些文件可能需要一段时间,特别是如果你像我一样

 :set path=** 

第二个问题,一旦发现,他们需要阅读,如果你正在使用networking文件系统(我明白),发现和阅读所有这些文件可能会触发caching未命中,使其痛苦缓慢。

我已经删除了我现在,因为我有一个标签文件,往往不是,我也有相关的文件在我的缓冲区(加载或卸载),这将作为“b”和“u ”。

使用

 set complete-=i 

要从列表中删除我,注意这是缓冲区的本地。

从升级到Vim 7.3(从7.2开始),有一个非常类似的问题:我使用(优秀的) ACP插件和更长的源文件(C文件,1700 LOC),popup花了很长时间来跳过我的build议编辑文件底部附近。

使用PerformanceValidator (来自SoftwareVerify ),我发现一些折叠方法被一次又一次地调用,并导致非常高的处理器负载和缓慢完成。

我的解决方法是将foldmethodfdm )设置为manual 这解决了它…

你正在使用的项目有一个标签文件吗? 如果不想用exuberant-ctag生成一个,Vim应该用taglist pluglin来select它。