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

cha*_*lax 295 debugging vim optimization macvim

有没有办法分析Vim插件?

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

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

ZyX*_*ZyX 466

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

:profile start profile.log
:profile func *
:profile file *
" At this point do slow actions
:profile pause
:noautocmd qall!
Run Code Online (Sandbox Code Playgroud)

(不像退出noautocmd那样真的不需要,它只会使vim退出更快).

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

  • 如果不清楚,生成的`profile.log`是Vim会话当前目录中的文件. (22认同)
  • 这真太了不起了.我能够看到EasyTags是罪魁祸首.非常感谢! (12认同)
  • @subjectego`:设置更多| verbose function {function_name}`将显示函数内容及其所在位置. (6认同)
  • 跳转到`profile.log`的末尾,看看按总时间排序的函数列表(`profile.log`对我来说似乎没用,我发现它最后有一个排序列表). (6认同)
  • 这帮助我发现了"vim-gitgutter"作为障碍物. (5认同)
  • 如何将特定插件识别为性能不佳的主要原因?我可以获得如下所示的信息,但我仍然不清楚是什么负责调用它以及应该采取什么措施.`FUNCTION <SNR> 51_Highlight_Matching_Pair()``叫1次``总时间:0.669410`自身时间:0.669410` (3认同)
  • @blushrt你有Vim没有编译的分析支持.你需要得到Vim. (2认同)
  • 这是前三行的一行: `:profile start profile.log | 配置文件功能 * | 配置文件*` (2认同)

fei*_*ihu 72

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

vim --startuptime timeCost.txt timeCost.txt
Run Code Online (Sandbox Code Playgroud)

请运行:

:help --startuptime
Run Code Online (Sandbox Code Playgroud)

在VIM中获取更多信息.

  • 为了防止其他人想知道,这在所有vim/gvim发行版中都不存在.在这里没有股票Win Gvim 7.4(虽然它在viminfo中记录) (3认同)

Ing*_*kat 30

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

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

如果你可以在某种程度上可靠地再现缓慢,那么二进制搜索可能有所帮助:将一半文件移走~/.vim/plugin/,然后移动另一文件,在缓慢的集合中重复.

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


Pri*_*ash 14

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

vim -V12log
Run Code Online (Sandbox Code Playgroud)

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

  • 但日志上没有时间 (9认同)

dus*_*uff 6

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

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

  • 如果语法突出显示文件确实是罪魁祸首,那么下一步该怎么办? (3认同)