355

有没有办法分析 Vim 插件?

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

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

4

6 回答 6

563

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

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

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

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

于 2012-08-31T13:41:27.643 回答
86

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

vim --startuptime timeCost.txt timeCost.txt

请运行:

:help --startuptime

在 VIM 中获取更多信息。

于 2013-12-03T08:37:31.383 回答
31

它可以是插件或语法高亮;当这种情况发生时尝试一下:syntax off,看看 Vim 是否立即变得更快。

对于插件,“一般缓慢”通常来自自动命令;a:autocmd将它们全部列出。通过杀死其中一些进行调查:autocmd! [group] {event}。从更频繁的事件(即CursorMoved[I])到不太频繁的事件(例如BufWinEnter)。

如果您可以在某种程度上可靠地重现缓慢,则二进制搜索可能会有所帮助:移开 中的一半文件~/.vim/plugin/,然后在另一组中重复缓慢的文件。

如果您真的需要深入了解,请获取:profile启用了该命令的 Vim 版本。(不是普通的 BIG Windows 版本,而是 Cygwin 附带的版本;此外,在大多数发行版下,自编译非常容易。)

于 2012-08-31T12:04:09.770 回答
17

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

vim -V12log

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

于 2012-08-31T11:00:58.257 回答
10

如果您遇到屏幕更新操作(^L、滚动等)缓慢的问题,您的问题可能是语法高亮文件效率低下。您可以通过暂时禁用语法高亮 ( :syn off) 并查看问题是否消失来对此进行测试;如果您想深入了解详细信息,可以使用以下方式分析当前语法文件:syntime

  1. 打开导致语法突出显示性能问题的文件。
  2. 运行:syntime on以开始分析。
  3. 稍微滚动一下文件。
  4. 运行:syntime report以生成报告。报告中首先列出的模式是处理时间最长的模式。
于 2018-09-19T19:30:01.753 回答
1

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

于 2020-07-12T17:08:02.160 回答