有没有一种方法来分析Vim插件?
当我打开一个大的.py时,我的MacVim变得越来越慢。我知道我可以取消所有的插件,然后逐个重新选择,来检查哪个插件是罪魁祸首,但是有没有更快的方法呢?
.py
我的dotvim在这里:https://github.com/charlax/dotvim
通过使用-V选项启动Vim,我发现将所有Vim活动打印到一个文件中很有帮助:
-V
vim -V12log
这提供了最大的详细信息(级别12),并将其输出到文件log。然后,您可以执行一些您知道很慢的Vim操作,然后查看哪些函数/映射正在内部调用。
log
它可以是一个插件或语法突出显示;当这种情况发生时,尝试:syntax off,看看Vim是否立即变得更快。
:syntax off
对于插件,“一般的慢”通常来自自动命令;a :autocmd将它们全部列出。通过:autocmd! [group] {event}杀死其中一些来进行调查。从更频繁的事件(例如CursorMoved[I])到不太频繁的事件(例如BufWinEnter)。
:autocmd
:autocmd! [group] {event}
CursorMoved[I]
BufWinEnter
如果你能在某种程度上可靠地重现这种慢性,二进制搜索可能会有所帮助:移走~/.vim/plugin/中的一半文件,然后在慢的集合中重复另一个文件。
~/.vim/plugin/
如果你真的需要深入了解,可以使用启用了:profile命令的Vim版本。(不是普通的BIG Windows版本,而是Cygwin附带的版本;而且,在大多数发行版下,自编译是相当容易的。)
:profile
您可以使用内置分析支持:启动vim do后
:profile start profile.log :profile func * :profile file * " At this point do slow actions :profile pause :noautocmd qall!
(不像退出noautocmd不是真正需要的,它只是让vim退出更快)。
noautocmd
注意:你不会得到在vim退出之前被删除的函数的信息。
我发现了另一个非常有用的vim内置方法,可以在加载.vimrc时显示准确的计时消息。
vim --startuptime timeCost.txt timeCost.txt
请运行:
:help --startuptime
以获取更多信息。
如果你有屏幕更新操作(^L,滚动等)缓慢的问题,你的问题可能是低效的语法突出显示文件。你可以通过暂时禁用语法高亮显示(:syn off)来测试,看看问题是否消失了;如果你想深入了解细节,你可以使用:syntime分析当前的语法文件:
^L
:syn off
:syntime
:syntime on
:syntime report
一个非常简单的解决方案:找到一个缓慢的命令。移动一个插件到/tmp/。重试该命令。如果仍然很慢,将另一个插件移动到/tmp/。重复此步骤,直到找到使该命令变慢的插件。
/tmp/