Vim 响应非常缓慢。

10
如果我打开一个包含5000行代码的文件并继续输入,我发现我的vim变得非常缓慢,需要大约1秒才能显示我的输入。即使在使用--noplugin的情况下,它仍然不会变得更好。但是在切换了我的 .vimrc 文件之后,一切都恢复正常了。这个.vimrc文件是我自己写的,在检查了一段时间后,我仍然找不到错误。我已经清除了所有键映射,但问题仍然存在。
所以你能给我任何建议或告诉我如何在vim中调试吗?我发现有一个调试选项,但不知道如何使用。

有没有使用Janus?如果是的话,那似乎是一个常见的问题。如果您不依赖于Fugitive,请禁用它。https://github.com/carlhuda/janus/issues/396 - three
谢谢三。我现在不知道vim的版本。但似乎不是vim的问题,而是我编写的脚本有些问题。 - Frank Cheng
1
文件类型是什么?是XML吗?你尝试过:syn off了吗? - Benoit
这是Java文件。很抱歉,它在公司的电脑里。我回到公司后会发布它。 - Frank Cheng
5个回答

14

你可以在启动vim时使用--startuptime选项:

--startuptime {fname}                   *--startuptime*
        During startup write timing messages to the file {fname}.
        This can be used to find out where time is spent while loading
        your .vimrc, plugins and opening the first file.
        When {fname} already exists new messages are appended.
        (Only available when compiled with the |+startuptime|
        feature).

按照以下步骤诊断问题:

  • 在Bash中键入vim --startuptime log.txt main.java以启动vim。
  • 在vim中键入:tabe log.txt以查看日志。

2
嗨kav。我的vim启动不慢。 - Frank Cheng

11

导致缓慢的原因通常是在 vim 编译时未设置或设置错误的 ruby_path(也可以看看谷歌 vim/ruby 讨论组中的讨论)。将其设置在 vimrc 中会更容易,因为这样你就可以在不重新编译 vim 的情况下更改它。你可以通过在 .vimrc 文件中设置 g:ruby_path 变量来设置该路径。不要复制并粘贴两者,选择正确的一个。

如果您设置了 RBENV,则必须使用此选项:

" ruby path if you are using rbenv
let g:ruby_path = system('echo $HOME/.rbenv/shims')

如果您设置了RVM,您必须使用这个:

" ruby path if you are using RVM
let g:ruby_path = system('rvm current')

你也可以使用vim-rbenv插件,该插件还会设置路径。

对于我来说,在vim中加载特定的ruby函数的速度提高了10倍。

如果你使用jruby,则启动速度可能会更慢。 在这里可以找到修复问题的示例。


确实,通过这种方法强制指定Ruby路径可以显著提高Vim的启动速度。谢谢! - Carlos Agarie

9

如果你正在运行vim 7.4版本,

请将以下内容放入你的.vimrc文件中:

set regexpengine=1

vim 7.4版本引入了新的正则表达式引擎,但在某些情况下似乎不能很好地工作。而之前的版本vim 7.3使用旧的引擎( set regexpengine=1 )。

语法高亮反应缓慢问题同样也会影响vim帮助文件以及.vimrc文件。


:set regexpengine=1 -- 这是一个很棒的发现,没有其他专家提到过。在进行此更改后,我有了一些改进(但不完全)。另一个导致我的减速的原因是 :set relativenumber,它会导致大量屏幕重绘,从而有效地显示减速。 - Loves Probability

7

通常这种问题是由语法高亮引起的。尝试使用:syntax off


在文件大小为(~5000行)的情况下,不应该出现任何问题,我的文件要大得多,但仍然没有减速。如果是500000行,也许会有问题... - Rook
这不是语法问题。我已经更改了别人的vimrc,语法是开启的。它可以正常工作。谢谢。 - Frank Cheng
1
当我关闭语法时,问题得到了解决。但是当我更改vimrc文件时,速度也会加快。我已经在这两个vimrc文件中引用了相同的语法。 - Frank Cheng
这对我来说是答案,使用语法高亮显示YAML文件。谢谢! - Bob Kocisko

0

将以下行添加到您的~/.vimrc~/.config/nvim/init.vim文件中:

set lazyredraw   " don't redraw everytime
set synmaxcol=128  " avoid slow rendering for long lines
syntax sync minlines=64  " faster syntax hl

此外,如果您正在使用tmux,请考虑将以下内容添加到您的~/.tmux.conf文件中:
set -sg escape-time 10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接