如何查看哪些插件使Vim变慢?

时间:2012-08-31 10:33:53

标签: debugging optimization vim macvim

有没有办法分析Vim插件?

当我打开一个大的.py时,我的MacVim变得越来越慢。我知道我可以取消选择所有插件并逐个重新选择以检查哪个插件是罪魁祸首,但有更快的方法吗?

我的dotvim在这里:https://github.com/charlax/dotvim

6 个答案:

答案 0 :(得分:446)

您可以使用内置的分析支持:启动vim后执行

:profile start profile.log
:profile func *
:profile file *
" At this point do slow actions
:profile pause
:noautocmd qall!

(与退出noautocmd不同,并不是真的需要,它只会使vim退出更快)。

注意:在vim退出之前,您将无法获得有关已删除的功能的信息。

答案 1 :(得分:66)

我发现了另一个非常有用的vim buildin方法,用于在加载.vimrc时显示准确的计时消息。

vim --startuptime timeCost.txt timeCost.txt

请运行:

:help --startuptime
在VIM中获取更多信息。

答案 2 :(得分:28)

它可以是插件或语法高亮;发生这种情况时尝试:syntax off并查看Vim是否会立即变快。

使用插件,“一般缓慢”通常来自自动命令; :autocmd列出所有内容。通过:autocmd! [group] {event}杀死其中一些进行调查。从更频繁的事件(即CursorMoved[I])到较不频繁的事件(例如BufWinEnter)。

如果你能在某种程度上可靠地重现这种缓慢,那么二分搜索可能会有所帮助:将~/.vim/plugin/中的一半文件移走,然后移动另一部分,重复放慢速度。

如果您真的需要深入了解,请获取启用了:profile命令的Vim版本。 (不是vanilla BIG Windows版本,但Cygwin附带的版本有它;而且,在大多数发行版中,自编译都很容易。)

答案 3 :(得分:14)

我发现通过使用-V选项启动Vim,将所有Vim活动打印到文件会很有帮助:

vim -V12log

这提供了最大的详细程度(级别12)并将其输出到文件log。然后,您可以执行一些您知道速度很慢的Vim操作,然后查看内部调用哪些函数/映射。

答案 4 :(得分:3)

如果屏幕更新操作(^L,滚动等)速度缓慢,则可能是语法突出显示文件效率低下。您可以通过暂时禁用语法突出显示(:syn off)并查看问题是否消失来进行测试。如果您想深入了解细节,可以使用:syntime来分析当前语法文件:

  1. 打开一个导致语法突出显示性能问题的文件。
  2. 运行:syntime on开始分析。
  3. 稍微滚动一下文件。
  4. 运行:syntime report以生成报告。报告中最先列出的模式是处理时间最多的模式。

答案 5 :(得分:1)

一个非常简单的解决方案:查找一个慢速命令。将一个插件移至/tmp/。再试一次命令。如果仍然很慢,请将另一个插件移至/tmp/。重复,直到找到使命令变慢的插件。