我喜欢Vim.但它现在让我很难过.
我使用了很多插件,在过去的6个月里,我发现了很多很棒的插件.但我的Vim也非常迟钝.我不断清理,但没有多大帮助.
我就是这样,Vim完全无法使用.感觉它呈现每秒2-5帧,切换标签/缓冲区需要大约一秒钟,滚动hjkl非常糟糕,滞后是如此糟糕,甚至在插入模式中键入句子令人困惑(由于滞后).
编辑:实际上,当我打开Vim的新实例时,OK-ish,但在15分钟内它变得无法使用.
我花了4个小时试图找出导致痛苦的插件或配置.我没有成功.
但是,我确实发现,删除此设置会导致所有延迟消失:
syntax on
这3行与语法相结合使一切变得更糟.
set t_Co=256
set background=dark
colorscheme candyman
Run Code Online (Sandbox Code Playgroud)
有趣.那么,语法突出显示将Vim从超级活泼变为令人难以置信的迟缓?
我尝试在"干净"模式下启用语法:
vim -u NONE
这不是问题.
所以似乎问题是Syntax Highlighting与我的一个或多个插件结合使用.我试过禁用一堆,没有运气.
有什么方法可以进行分析吗?手动测试我很累.
有没有人有类似的经历?也许快速浏览一下.vimrc,看看有什么响铃.
https://bitbucket.org/furion/dotfiles
解决方案: 导致混乱的插件是:
Bundle "gorodinskiy/vim-coloresque.git"
Run Code Online (Sandbox Code Playgroud)
我建议阅读答案,好的见解.
编辑(1个月后): coloresque插件已经看到一些改进.
Ask*_*arn 86
:syntime on
Run Code Online (Sandbox Code Playgroud)
然后在你的ruby文件中移动
:syntime report
Run Code Online (Sandbox Code Playgroud)
它报告了以下最慢的匹配,你可以看到甚至没有匹配.
我在ruby.vim文件中禁用了rubyPredefinedConstant并解决了问题.Vim正则表达式引擎不喜欢ruby语法高亮正则表达式中的东西.您必须在足够的语法highligting和良好的性能之间找到平衡点.
希望有所帮助,这是我的Mac OS 10.8.5上报告的ruby报告的前3个最慢的语法高亮,自制的Vim 7.4(console vim)
TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN
3.498505 12494 0 0.008359 0.000280 rubyPredefinedConstant \%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!
2.948513 12494 0 0.006798 0.000236 rubyPredefinedConstant \%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(MatchingData\|ARGF\|ARGV\|ENV\)\>\%(\s*(\)\@!
2.438253 12494 0 0.005346 0.000195 rubyPredefinedConstant \%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(DATA\|FALSE\|NIL\)\>\%(\s*(\)\@!
Run Code Online (Sandbox Code Playgroud)
或者你可以尝试vim-rubyDojosto所指出的
Jus*_*yes 26
你有autocmd垃圾邮件.在重新添加autocmds之前,应将所有autocmd语句包装在清除组的组中.看起来你的.vimrc大多数autocmds已经注释掉了,所以也许有一个插件导致了这个问题.检查此命令的输出:
:au CursorMoved
Run Code Online (Sandbox Code Playgroud)
如果那里有一堆重复的处理程序,那就是你的问题.
这是我的.vimrc中autocmd纪律的一个例子:
augroup vimrc_autocmd
autocmd!
"toggle quickfix window
autocmd BufReadPost quickfix map <buffer> <leader>qq :cclose<cr>|map <buffer> <c-p> <up>|map <buffer> <c-n> <down>
autocmd FileType unite call s:unite_settings()
" obliterate unite buffers (marks especially).
autocmd BufLeave \[unite\]* if "nofile" ==# &buftype | setlocal bufhidden=wipe | endif
" Jump to the last position when reopening a file
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
" ...etc...
augroup END
Run Code Online (Sandbox Code Playgroud)
的autocmd!在开头augroup块清除了当前组(vimrc_autocmd前重新添加自动命令,在这种情况下).
小智 13
我发现"set foldmethod = syntax"使7.4几乎无法使用,例如js和ruby文件(ubuntu 13.10),而"set foldmethod = indent"工作正常.
我要感谢大家帮助我解决这个问题.好消息是,我的Vim再次活泼.
我开始重新安装新的Vim.我不是通过插件添加插件,直到找到了所有邪恶的根源.
Bundle "gorodinskiy/vim-coloresque.git"
Run Code Online (Sandbox Code Playgroud)
它的插件让我感到很痛苦.由于我有一段时间,它不是一个嫌疑人,这就是为什么我这么晚发现它.这个插件的作用是,无论何时找到颜色的单词(例如红色,绿色)或十六进制值(例如#FFFFFF),它都会设置文本的背景颜色以匹配其描述的颜色.很棒的想法,但似乎执行不力.
删除此插件可以消除滞后现象.
但我并没有就此止步.我也完成了对.vimrc的重大清理工作.删除了一些我没用过的插件.分组我autocmd的并删除不必要的.
我的Vim现在非常活泼.我又开心了.
语法高亮可能很慢,但这应该仅限于某些(有些病态的)文件和特定的语法。最新的 Vim 7.4 有一个新命令:syntime来解决语法高亮显示缓慢的问题。
除此之外,通常,在二进制搜索中您禁用了一半的插件,然后只有一半(当问题仍然存在时)或另一半(当问题消失时)可以让您快速找到有问题的脚本.