随着语法的开启,Vim随着时间的流逝而变慢


11

syntax on使用Vim时我可以做些什么来保持?

一打开实质性内容,过一会儿几乎就无法编辑。每次按键都会导致延迟。如果我关闭了语法高亮显示功能或重新启动了vim,那就可以了。

我将其synmaxcol设置为120。示例ruby文件只有59行,且不超过80个字符。

我正在使用vim-rubyvim-rails

问题在于,延迟似乎会随着时间而累积。当我从头开始打开文件时,就可以了。一段时间后,它变得越来越慢。


1
您是否尝试用复制vim -Nu NONE -c 'syntax on'?你有没有遵循这个调试技巧
阿克沙伊

什么文件类型?任何?
romainl

1
红宝石。实际上,它是可以编辑的,-u NONE因此它一定是某个插件。猜猜大多数问题的答案是“禁用插件,直到找到罪魁祸首” :(
firedev 2015年

但是问题是-延迟似乎随着时间的推移而累积。当我从头开始打开文件时,就可以了。一段时间后,它变得越来越慢。
firedev

Answers:


13

最新的Vim版本具有一个:syntime命令,可通过生成有关每个语法组匹配所需时间的报告来解决语法高亮显示的速度问题。这非常有帮助,可以迅速让您找到罪魁祸首。唯一的缺点是您需要启用概要分析的Vim(通常是“ HUGE”)构建。:help :syntime提供了良好的使用说明。

或者,您可以尝试从~/.vim/syntax/和中删除单个语法脚本$VIMRUNTIME/syntax/(根据current 'filetype'),然后通过删除脚本内部的语法定义的一部分进一步深入研究。


嗯,很有趣,听起来像是标签相关的东西。花费时间最多的最顶行有我其他项目中的方法。 TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN 0.129674 247 182 0.002365 0.000525 rubyMethodNameTag \C\<\%(roi\|paginate\|admin_index_attributes\|facilities\|manager\|net_price?\ ....–很明显,这是从另一个文件夹中获得的。禁用标签?
firedev 2015年

您是否使用突出显示标签的插件,例如vim-easytags?这确实可能导致速度下降。
Ingo Karkat 2015年

是的,禁用它,不是数字再次变得理智。谢谢。
firedev 2015年

嗯,现在它又开始运转了,这一次是:0.121880 2078 54 0.002260 0.000059 rubySymbol []})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@= –我能做些什么?
firedev

2
可能是新的正则表达式引擎。试试:set regexpengine=1(最好在新的Vim实例中,然后再打开Ruby文件)。
Ingo Karkat 2015年

5

vim语法突出显示中的另一个典型瓶颈是折叠。如果折叠包含许多语法项(这基本上意味着它要跨越多行),则编辑会变得非常缓慢,因为vim会刷新每个插入字符的所有语法。

如果这是您遇到的问题,那么我建议您使用FastFold插件。这个插件可以识别语法折叠并将其替换为手动折叠,从而使vim的语法突出显示速度更快。


1

这是我最后所做的:

  • 已移除 xolox/vim-easytags
  • 已移除 xolox/vim-misc
  • 更换 kien/ctrlp d11wtq/ctrlp_bdeletetacahiroy/ctrlp-funky使用 junegunn/fzf
  • regexpengine=1

现在,Vim像黄油一样光滑,但是我没有标签了。叹...


1
Vim具有内置的标签支持。您不需要任何第三方插件(当然除了ctags可以生成标签文件)。请参阅蒂姆·波普(Tim Pope)撰写的《使用Git轻松实现Ctags》。我用它,它使奇迹产生。另请参阅:help tag-commands跳转到标签。在使用Vim时,我认为ctags非常重要。它使导航变得非常简单,您甚至可以使用来自动完成:help i_Ctrl-x_Ctrl-]
akshay 2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.