有没有一种方法来分析Vim插件?

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

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


当前回答

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

vim --startuptime timeCost.txt timeCost.txt

请运行:

:help --startuptime

以获取更多信息。

其他回答

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

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

(不像退出noautocmd不是真正需要的,它只是使vim退出更快)。

注意:你不会得到在vim退出之前被删除的函数的信息。

一个非常简单的解决方案:找到一个缓慢的命令。移动一个插件到/tmp/。重试该命令。如果仍然很慢,将另一个插件移到/tmp/。重复此步骤,直到找到使该命令变慢的插件。

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

vim --startuptime timeCost.txt timeCost.txt

请运行:

:help --startuptime

以获取更多信息。

如果您遇到屏幕更新操作(^L,滚动等)很慢的问题,您的问题可能是语法高亮显示文件效率低下。你可以通过暂时禁用语法高亮显示(:syn off)来测试,看看问题是否消失了;如果你想深入了解细节,你可以使用:syntime分析当前语法文件:

打开导致语法突出显示性能问题的文件。 运行:syntime on启动分析。 滚动一下文件。 执行命令syntime report,生成报表。报告中首先列出的模式是需要花费最多时间来处理的模式。

它可以是一个插件或语法突出显示;当这种情况发生时,尝试a:语法关闭,看看Vim是否会立即变得更快。

对于插件,“一般的慢”通常来自自动命令;答:autocmd列出所有这些。通过:autocmd!【集团】}{事件。从更频繁的事件(例如CursorMoved[I])到不太频繁的事件(例如BufWinEnter)。

如果您可以可靠地重现这种慢性,那么二进制搜索可能会有所帮助:移走~/中的一半文件。Vim /plugin/,然后另一个,在慢的集合中重复。

如果您真的需要深入了解,可以使用启用了:profile命令的Vim版本。(不是普通的BIG Windows版本,而是Cygwin附带的版本;而且,在大多数发行版下,自编译是相当容易的。)