Vim的自动完成速度极其缓慢

时间:2010-01-30 22:10:33

标签: vim autocomplete code-completion

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

有时Vim告诉我其他时间只是“扫描”,它说的是“扫描标签”

我只在Ruby文件中发生这种情况,并且主要发生在文件中存在require时。

我的猜测是,这是一种检查自动完成选项的相关文件的功能,但我并不真的需要它,并且更喜欢更快的自动完成。

3 个答案:

答案 0 :(得分:107)

正如我在评论中提到的,我遇到了同样的问题。这是我找到的;

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

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

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

:set path=**

第二个问题,一旦找到,就需要阅读,如果你正在使用网络文件系统(我是清楚的),那么查找和读取所有这些文件都可能会触发缓存未命中,从而使它变得非常缓慢。 / p>

我现在已经移除了i,因为我有一个标签文件,而且我经常在我的缓冲区(加载或卸载)中有相关文件,这些文件将被搜索为'b'的结果和'你'。

使用

set complete-=i

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

答案 1 :(得分:42)

自从升级到Vim 7.3(从7.2开始)以来出现了一个非常类似的问题:我使用的是(优秀的)ACP plugin和更长的源文件(C文件,1700 LOC),弹出窗口需要很长时间才能跳转通过我在文件底部附近编辑时的建议。

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

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

答案 2 :(得分:5)

您有正在处理的项目的标签文件吗?如果没有尝试使用exuberant-ctags生成一个,Vim应该使用taglist pluglin来获取它。