Vim 响应很慢
Posted
技术标签:
【中文标题】Vim 响应很慢【英文标题】:Vim response quite slow 【发布时间】:2012-03-09 15:37:05 【问题描述】:如果我打开一个包含 5000 行代码的文件并继续输入,我发现我的 vim 变得很慢,大约 1s 后它显示我的输入。
在我开始使用--noplugin
之后,它甚至不会变得更好。但是在切换我的.vimrc
文件后,一切都恢复正常了。 .vimrc
文件是我自己写的,查了一段时间,还是找不到错误所在。我已经清除了所有的键映射,但问题仍然存在。
那么你能给我任何建议或告诉我如何在 vim 中调试吗?我发现有一个调试选项,但不知道如何工作。
【问题讨论】:
Janus 被使用过吗?如果是这样,这似乎是一个普遍的问题。如果 xou 不依赖逃犯,请禁用它。 github.com/carlhuda/janus/issues/396 谢谢三位。我现在不知道 vim 的版本。但是好像不是vim引起的,而是我写的脚本有问题。 文件类型是什么?那是XML吗?你试过:syn off
吗?
这是java文件。对不起,它在公司的电脑里。等我回公司再贴出来。
【参考方案1】:
你可以在启动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
查看日志。
【讨论】:
嗨,卡夫。我的 vim 启动并不慢。 好的,我试试。谢谢凯夫。【参考方案2】:速度慢的原因通常是 vim 编译时未设置或设置错误的 ruby_path (see also discussion on google vim/ruby google group)。在 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,那么启动速度可能会更大。请参阅修复它的示例here。
【讨论】:
确实,通过这种方法强制使用 ruby 路径可以大大提高 vim 的启动速度。谢谢!【参考方案3】:如果运行 vim 7.4,
把它放在你的 .vimrc 中
设置 regexpengine=1
vim 7.4 有一个新的正则表达式引擎,在某些情况下似乎不能正常工作。以前版本的 vim 7.3 使用旧引擎 ( set regexpengine=1 )。
语法高亮问题的“缓慢响应”也会影响 vim 帮助文件(以及 .vimrc 文件)。
【讨论】:
:set regexpengine=1
-- 这是一个很好的发现,没有其他专家提到过。在此更改之后,我得到了一些改进(但不是完整的)。我速度变慢的另一个原因是:set relativenumber
,它导致大量屏幕重绘有效地显示速度变慢。【参考方案4】:
这样的事情通常是由语法着色引起的。试试:syntax off
。
【讨论】:
在文件大小(~5000 行)上应该不会出现任何问题,我的文件要大得多,而且仍然没有减速。如果是 500000 行,也许…… 不是语法问题,我换了别人的vimrc,语法是开的。它工作正常。谢谢。 当我关闭语法时,问题解决了。但是当我更改 vimrc 文件时它也会加快速度。我在这两个 vimrc 文件中引用了相同的语法。 这是对我的语法着色 YAML 文件的答案。谢谢!【参考方案5】:将这些行添加到您的~/.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
【讨论】:
以上是关于Vim 响应很慢的主要内容,如果未能解决你的问题,请参考以下文章