Vim慢速,带ruby语法高亮显示

Vim慢速,带ruby语法高亮显示,ruby,vim,Ruby,Vim,我已经使用vim over ssh工作了一两周,一切都很顺利。今天我决定添加一些语法突出显示、自动完成和其他一些通用插件。设置vundle并开始工作 我当前的.vimrc可以在 我已经将我的vimrc和vim文件克隆到我本地的ubuntu桌面上,vim完全按照预期运行,在我能找到的任何文件上都不慢。相同的插件和相同的vimrc,ruby文件上没有速度慢 更新 我可以用下面的方法重现这个问题 syntax on 和一个空的~/.vim文件夹 但是,使用ruby/haml文件时,此vps上的vim

我已经使用vim over ssh工作了一两周,一切都很顺利。今天我决定添加一些语法突出显示、自动完成和其他一些通用插件。设置vundle并开始工作

我当前的.vimrc可以在

我已经将我的vimrc和vim文件克隆到我本地的ubuntu桌面上,vim完全按照预期运行,在我能找到的任何文件上都不慢。相同的插件和相同的vimrc,ruby文件上没有速度慢

更新

我可以用下面的方法重现这个问题

syntax on
和一个空的
~/.vim
文件夹

但是,使用ruby/haml文件时,此vps上的vim速度非常慢。更多的是ruby文件。当我打开任何ruby文件时,启动大约需要2秒钟(用--startuptime计时)。对于长度相当的haml文件,大约需要0.5秒。这种缓慢也不仅仅是在启动时,移动和编辑文件都非常缓慢

Haml/erb(基本相同)

红宝石

在相同的ruby文件上没有语法高亮显示

149.047  000.004: before starting main loop
152.912  003.865: first screen update 
我尝试过使用mosh(),但没有任何帮助。不太相关了

正如您在我的.vimrc文件中所看到的,我尝试了一些不同的解决方案来解决这个问题。 我尝试过在禁用所有插件的情况下运行(我将它们从
~/vim/bundle/PLUGINNAME
移动到
~/vim/bundle/disabled/PLUGINNAME
,是否正确?),设置ruby路径,将foldlevel设置为手动,禁用我的配色方案,没有任何帮助见编辑3

如果有帮助,我可以发布任何文件的完整StartupTime日志。
我已经测试了一些其他语言(php、c、python、vimL),但没有一种语言的速度减慢


编辑:我只是想澄清一下,我正在使用ssh运行ssh会话user@server然后在服务器内部执行vim file.rb

EDIT2:我刚刚尝试直接访问服务器,但是没有ssh时速度仍然很慢,我已经更新以反映ssh没有问题

EDIT3:我可以用一个.vimrc文件重现该问题,该文件包含一行
语法,并且带有一个空的~/.vim文件夹


EDIT4我卸载了我编译的vim版本以及通过apt安装的任何版本,手动从我的系统中删除了所有vim内容,我可以使用
vim-u NONE/path/to/file.rb运行vim,然后打开do:syn,问题就会出现。所讨论的文件是rails控制器,但正如我所说,我可以用大多数文件在某种程度上重新创建它,但rails控制器看起来是最糟糕的。您应该在vimrc中设置此tw选项:

set ttyfast
set lazyredraw
let g:ruby_path="/usr/bin/ruby"
如果这不能解决您的问题,请尝试在没有vimrc的情况下启动vim,以确保当前设置没有任何问题

vim -u NONE

尝试在vimrc中显式设置ruby路径:

set ttyfast
set lazyredraw
let g:ruby_path="/usr/bin/ruby"

这个问题的解决方案是vim使用的正则表达式引擎。 关于freenode上的#vim的猜测是ruby语法文件使用的东西在新的正则表达式引擎上要慢一些

任何早于Vim 7.3.969(含Vim 7.3.969)的版本都有旧的正则表达式引擎。 将
set re=1
添加到您的
vimrc
中,以强制将旧的正则表达式引擎加载到任何更新的版本上(并且不要忘记重新加载您当前正在使用
:e
编辑的文件)

多亏了维姆公司的Houl、Dolio和dmedvinsky的帮助


我还没有机会尝试绝对最新的版本,昨晚有一次提交可能会帮助解决这个问题。如果我有机会再次尝试最新版本,我将更新此版本。

有两件事将大大有助于加快Ruby语法高亮显示的速度:禁用Ruby的光标线和相对数(如果您使用这些)

我的.vimrc中有以下内容:

" Ruby is an oddball in the family, use special spacing/rules
if v:version >= 703
  " Note: Relative number is quite slow with Ruby, so is cursorline
  autocmd FileType ruby setlocal ts=2 sts=2 sw=2 norelativenumber nocursorline
else
  autocmd FileType ruby setlocal ts=2 sts=2 sw=2
endif

我尝试了这些解决方案中的大多数,但最适合我的是删除与航空公司相关的任何插件。

请参阅底部的更新

这可能有助于解决问题-

我使用的是vim版本

VIM-Vi提高了7.4(2013年8月10日,2014年1月2日汇编19:40:46)

附带补丁:1-52

它是来自 LinuxMint17.1Rebecca

我看不到php.vim语法文件的版本,但它上一次编辑是在2013年8月28日

它不是ruby项目,但在编辑大型php类文件时(

)我注意到明显的延迟发生在班级的顶端,但不是在班级的上方或下方,尤其是在班级的底部。当我尝试在类底部附近插入新文本时,延迟是最小的,并且似乎与类内的行号成比例。“最小”表示几乎立即,“重要”表示每个字符1到1.5秒

该文件大约有1800行,包含大约500行合法php和1300行注释和文档。课程开始于大约第30行,结束于大约第1700行。承认它有点大,但有很好的记录:-\

如果我插入

    class dummy { }
在原始“类原始名称{”前面, 文件中的任何地方都没有延迟。这个难看的kluge允许vim/gvim恢复其响应能力,可以被视为一种解决方法。请注意,两者之间没有换行,只是

    class dummy { } class originalName {
它甚至可以被注释掉:

    /*class dummy {}*/class originalName {
其他信息:

  • 在此测试期间,插件目录被移动

  • 使用“set syntax=off”时,问题完全消失。这不是修复方法

  • 将正则表达式引擎设置为

    set regexpengine=1   (or any other number)
    
    不会明显改变结果

  • 基于这些结果,我也会怀疑正则表达式引擎。我的观点是,稍微篡改一下ruby文件中的语法可能会导致一种解决方法

    更新: 我发现这个问题是由于将php_folding设置为1(启用)引起的
    set regexpengine=1   (or any other number)
    
        :syntax enable
        :let php_folding = 1
    
    augroup ft_rb
        au!
        " fix the SLOOOW syntax highlighting
        au FileType ruby setlocal re=1 foldmethod=manual
    augroup END