Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Syntax highlighting causes terrible lag in Vim

Tags:

vim

I love Vim. But its giving me hard times right now.

I use a lot of plugins and during the last 6 months, I've found a lot of awesome ones. But my Vim got really sluggish too. I do constant cleanups, but it doesn't help much.

I'm at the point, where Vim is completely unusable. It feels like it renders at 2-5 frames per second, switching tabs/buffers takes about a second, scrolling with hjkl is awfully terrible, the lag is so bad, even typing a sentence in insert mode is confusing (due to lag).

Edit: Actually, when I open fresh instance of Vim its OK-ish, but than within 15 minutes it becomes unusable.

I've just spent 4 hours trying to figure out which plugin or config is causing the pain. I was unsuccessful.

However, I did find out, that removal of this setting causes all the lag to go away: syntax on

These 3 lines in conjunction with syntax make everything even worse.

set t_Co=256 set background=dark colorscheme candyman 

Interesting. So, syntax highlighting is turning Vim from super snappy to incredibly sluggish?

I tried enabling syntax in "clean" mode: vim -u NONE

And its not an issue there.

So what seems to be the issue is Syntax Highlighting in combination with one or more of my plugins. I tried disabling bunch, no luck.

Is there any way to do profiling? I'm fairly exhausted from manual testing.

Has anyone had similar experience? Maybe take a quick peek into my .vimrc, see if anything rings a bell. https://bitbucket.org/furion/dotfiles

SOLUTION: The plugin causing the mess was:

Bundle "gorodinskiy/vim-coloresque.git" 

I recommend reading the answers tho, good insights.

Edit (1 month later): The coloresque plugin has seen some improvements.

like image 256
if __name__ is None Avatar asked Sep 26 '13 13:09

if __name__ is None


People also ask

Does vim support syntax highlighting?

VIM is an alternative and advanced version of VI editor that enables Syntax highlighting feature in VI. Syntax highlighting means it can show some parts of text in another fonts and colors. VIM doesn't show whole file but have some limitations in highlighting particular keywords or text matching a pattern in a file.

How do I permanently set syntax in Vim?

Add the text, “syntax on” anywhere in the file to enable syntax highlighting permanently for vim editor. Save and close the file by typing ':x'. For disabling the feature, just re-open . vimrc file, change the text “syntax on” to “syntax off” and save the file.


1 Answers

EDIT: Blogged about how this all works, with screenshots and awesome-sauce.

https://eduncan911.com/software/fix-slow-scrolling-in-vim-and-neovim.html

Original answer below...


:syntime on 

move around in your ruby file and then

:syntime report 

It reported the following slowest matching for me, and you can see that there are not even 1 match.

I disabled rubyPredefinedConstant in ruby.vim file and problem solved. Vim regex engine does not like something in ruby syntax highlight regex. You will have to find the balance between enough syntax highligting and a good performance.

hope that helps, here is the top 3 slowest syntax highlighting regex for ruby reported on my Mac OS 10.8.5, homebrew 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*(\)\@! 

Or you can try vim-ruby as pointed out by Dojosto

like image 115
Ask and Learn Avatar answered Nov 10 '22 16:11

Ask and Learn