大多数情况下,Vim中的自动完成功能对我来说很好用,但有时似乎正在扫描当前文件引用的文件,然后变得非常缓慢,有时需要花费几秒钟来将焦点释放给我。
有时Vim只是简单地告诉我,这是“扫描中”,这是在说“扫描标签”
我只在Ruby文件中发生这种情况,并且大多数情况下是在文件中有需求时发生的。
我的猜测是,这是一种用于检查相关文件中自动完成选项的功能,但我并不是真的需要它,而是希望使用更快的自动完成功能。
大多数情况下,Vim中的自动完成功能对我来说很好用,但有时似乎正在扫描当前文件引用的文件,然后变得非常缓慢,有时需要花费几秒钟来将焦点释放给我。
有时Vim只是简单地告诉我,这是“扫描中”,这是在说“扫描标签”
我只在Ruby文件中发生这种情况,并且大多数情况下是在文件中有需求时发生的。
我的猜测是,这是一种用于检查相关文件中自动完成选项的功能,但我并不是真的需要它,而是希望使用更快的自动完成功能。
Answers:
正如我在评论中提到的那样,我遇到了同样的问题。这是我发现的;
有一个设置告诉VIM在哪里寻找补全,称为complete
。
:set complete
complete=.,w,b,u,t,i
这是默认值。我的问题是(实际上是..)“ i”,它扫描所有包含的文件。这有两个问题,第一个,找到所有这些文件可能要花一些时间,尤其是如果您像我一样,
:set path=**
找到第二个问题后,就需要读取它们,如果您使用的是联网文件系统(我使用的是透明文件箱),那么查找和读取所有这些文件都可能会导致高速缓存未命中,从而使其速度非常缓慢。
我现在已经删除了i,因为我有一个标记文件,而且经常(在装载或卸载的情况下)我也有相关文件,这些文件将作为'b'和'u的结果进行搜索'。
采用
set complete-=i
要从列表中删除i,请注意,这对于缓冲区是本地的。
自从7.2升级到Vim 7.3以来,出现了一个非常相似的问题:我使用的是(出色的)ACP插件,并且在更长的源文件(C文件,1700 LOC)中,当我在文件底部附近进行编辑。
使用PerformanceValidator(来自Softwareverify),我发现反复调用了一些折叠方法,这导致了非常高的处理器负载和缓慢的完成。
我的解决方法是将foldmethod
(fdm
)设置为manual
。这样就解决了...
您是否有正在处理的项目的标记文件?如果没有尝试,请生成一个带有旺盛标签的文件,Vim应该使用标签列表插件将其选中。