我一直在使用vim over ssh工作一两个星期,一切都很顺利.今天我决定添加一些语法高亮,自动完成和其他一些通用插件.设置vundle并去上班.
我目前的.vimrc可以在https://github.com/scottopell/dotfiles/blob/master/.vimrc找到
我已将我的vimrc和vim文件克隆到我的本地ubuntu桌面上,vim运行完全符合预期,我找不到任何文件都没有慢.相同的插件和相同的vimrc,并且在ruby文件上没有慢.
更新
我可以使用以下.vimrc重现此问题
syntax on
Run Code Online (Sandbox Code Playgroud)
和一个空~/.vim文件夹.
但是,使用ruby/haml文件时,此vps上的vim非常慢.更多的红宝石文件.当我打开任何ruby文件时,启动大约需要2秒钟(使用--startuptime计时).使用可比较长度的haml文件,大约0.5秒.这种缓慢不仅仅是在启动时,移动和编辑文件都非常缓慢.
Haml/erb(它们基本相同)
268.818 000.005: before starting main loop
848.871 580.053: first screen update
Run Code Online (Sandbox Code Playgroud)
红宝石
199.613 000.004: before starting main loop
2937.859 2738.246: first screen update
Run Code Online (Sandbox Code Playgroud)
没有语法突出显示在上面相同的ruby文件上
149.047 000.004: before starting main loop
152.912 003.865: first screen update
Run Code Online (Sandbox Code Playgroud)
我尝试过使用mosh(http://mosh.mit.edu)并没有帮助. 不再那么相关了
正如您在我的.vimrc文件中看到的,我已经尝试了一些不同的解决方案来解决这个问题.我已经尝试禁用所有插件运行(我将它们全部移动~/vim/bundle/PLUGINNAME到~/vim/bundle/disabled/PLUGINNAME,这是正确的吗?),设置ruby路径,将foldlevel设置为手动,禁用我的colorscheme,没有任何帮助. 见edit3
我可以发布任何文件的完整startupttime日志,如果这将有所帮助.
我已经测试了一些其他语言(php,c,python,vimL),没有经历任何减速.
编辑:只是为了澄清,我正在运行ssh user @ server的ssh会话然后一次在服务器内我正在做vim file.rb.
EDIT2:我只是尝试直接访问服务器,并且缓慢持续没有ssh,我已经更新以反映这不是ssh的问题.
编辑3:我可以使用.vimrc文件重现该问题,该文件包含syntax on带有空〜/ .vim文件夹的单行
EDIT4 我卸载了我的编译版本的vim以及我可能通过apt安装的任何版本,手动删除了我系统中的所有vim内容,我可以运行vim vim -u NONE /path/to/file.rb然后执行:syn on,问题就在那里.有问题的文件是一个rails控制器,但就像我说的那样,我可以在某种程度上重新创建它与大多数文件,但轨道控制器看起来是最糟糕的.
Sco*_*ttO 98
这个问题的解决方案被证明是vim使用的正则表达式引擎.关于freenode上#vim的推测是ruby语法文件在新的正则表达式引擎上使用的速度较慢.
任何早于Vim 7.3.969的版本都有旧的正则表达式引擎.添加set re=1到您vimrc的强制旧版正则表达式引擎上的任何版本(并且不要忘记重新加载您当前正在编辑的文件:e).
感谢来自#vim的Houl,Dolio和dmedvinsky寻求帮助.
我没有机会尝试绝对最新版本,昨晚有一个提交可能有助于解决这个问题.如果我有机会再次尝试最新版本,我会更新这个.
Den*_*ane 16
你应该在你的vimrc中设置这两个选项:
set ttyfast
set lazyredraw
Run Code Online (Sandbox Code Playgroud)
如果这不能解决您的问题,请尝试在没有vimrc的情况下启动vim,以确保当前没有任何设置正在将其搞砸.
vim -u NONE
Run Code Online (Sandbox Code Playgroud)
小智 13
有助于加快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
Run Code Online (Sandbox Code Playgroud)
尝试在vimrc中显式设置ruby路径:
let g:ruby_path="/usr/bin/ruby"
Run Code Online (Sandbox Code Playgroud)
小智 7
我正在使用vim 7.4.52,这些解决方案都不适用于我.
根据这个github对该问题的评论(https://github.com/vim/vim/issues/282#issuecomment-169837021),foldmethod=syntax负责缓慢.
将此添加到我的.vimrc终于修复了!
augroup ft_rb
au!
" fix the SLOOOW syntax highlighting
au FileType ruby setlocal re=1 foldmethod=manual
augroup END
Run Code Online (Sandbox Code Playgroud)