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

jni*_*las 61 vim autocomplete code-completion

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

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

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

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

fal*_*tro 110

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

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

:set complete
complete=.,w,b,u,t,i
Run Code Online (Sandbox Code Playgroud)

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

:set path=**
Run Code Online (Sandbox Code Playgroud)

第二个问题,一旦发现,它们需要被阅读,如果你正在使用网络文件系统(我是清楚的),查找和读取所有这些文件可能会触发缓存未命中,使其变得非常缓慢.

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

使用

set complete-=i
Run Code Online (Sandbox Code Playgroud)

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


eck*_*kes 44

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

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

我的解决方法是将foldmethod(fdm)设置为manual.这解决了它......

  • 如果可以,我会给+5.向[此博客](http://economyofeffort.com/2012/03/01/fixing-slow-vim-auto-completion-with-ruby-files/)大喊大叫,指点我. (2认同)

Far*_*rel 6

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