La configuration Vim è lenta in Terminal e iTerm2, ma non in MacVim

Idealmente, voglio usare Vim da Terminal o iTerm2. Tuttavia, diventa insopportbile lento quindi ho dovuto ricorrere all'utilizzo di MacVim. Non c'è niente di sbagliato con MacVim, tuttavia il mio stream di lavoro sarebbe molto più liscio se avessi usato solo Terminal / iTerm2.

Quando è lento

Il mio programma di installazione

11 "MacBook Air che esegue Mac OS X versione 10.7.3 (1.6 Ghz Intel Core 2 Duo, 4 GB DDR3)

I miei dotfiles .

 > vim --version VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov 16 2011 16:44:23) MacOS X (unix) version Included patches: 1-333 Huge version without GUI. Features included (+) or not (-): +arabic +autocmd -balloon_eval -browse ++builtin_terms +byte_offset +cindent -clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments +conceal +cryptv -cscope +cursorbind +cursorshape +dialog_con +diff +digraphs -dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path +float +folding -footer +fork() -gettext -hangul_input +iconv +insert_expand +jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap -lua +menu +mksession +modify_fname +mouse -mouseshape +mouse_dec -mouse_gpm -mouse_jsbterm +mouse_netterm -mouse_sysmouse +mouse_xterm +multi_byte +multi_lang -mzscheme +netbeans_intg +path_extra -perl +persistent_undo +postscript +printer +profile +python -python3 +quickfix +reltime +rightleft +ruby +scrollbind +signs +smartindent -sniff +startuptime +statusline -sun_workshop +syntax +tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp -xterm_clipboard -xterm_save system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc" user exrc file: "$HOME/.exrc" fall-back for $VIM: "/usr/local/Cellar/vim/7.3.333/share/vim" Compilation: /usr/bin/llvm-gcc -c -I. -Iproto -DHAVE_CONFIG_H -DMACOS_X_UNIX -no-cpp-precomp -O3 -march=core2 -msse4.1 -w -pipe -D_FORTIFY_SOURCE=1 Linking: /usr/bin/llvm-gcc -L. -L/usr/local/lib -o vim -lm -lncurses -liconv -framework Cocoa -framework Python -lruby 

Ho provato a eseguire senza alcun plugin o l'evidenziazione della syntax. Apre i file molto più velocemente ma ancora non veloce come MacVim. Ma gli altri due problemi ancora esistono.

  1. Perché la mia configuration vim è lenta?
  2. Come posso migliorare la velocità della mia configuration vim all'interno di Terminal o iTerm2?

Ho provato una buona decina di volte per compilare Vim sul mio Mac, ma non sono mai riuscito a get un Vim usabile: each volta che ha funzionato ma era insopportbile lento e ritardato.

Dopo aver perso troppo tempo cercando di farlo funzionare ho semplicemente lasciato cadere l'asciugamano e ho creato un alias per l'eseguibile CLI eseguito da MacVim.

 alias vim='/path/to/MacVim.app/Content/MacOS/Vim' 

Non solo è veloce e reattivo ma ha le stesse caratteristiche che si possono trovare in MacVim, a patto che abbia senso in un terminal. Da allora, utilizzando MacVim e / o Vim non fa alcuna differenza per me e se utilizzo uno o l'altro è dettato solo dal context. Nessuno è meglio dell'altro.

Perché la mia configuration vim è lenta? Come posso migliorare la velocità della mia configuration vim all'interno di Terminal o iTerm2?

Utilizzando il binario pre-compilato di MacVim.

Provate anche Linux un giorno. MacVim è veloce solo se non hai mai usato GVim o Vim in una casella Linux.

Ho scoperto che qualsiasi plugin o impostazioni che influenzano il display (cursorline, cursorcolumn, vim-powerline, vim-airline, matchit.vim ecc.) Rallentano Vim nel terminal in modo significativo.

Ecco alcune linee del mio .vimrc per mantenere le cose veloci:

 let loaded_matchparen=1 " Don't load matchit.vim (paren/bracket matching) set noshowmatch " Don't match parentheses/brackets set nocursorline " Don't paint cursor line set nocursorcolumn " Don't paint cursor column set lazyredraw " Wait to redraw set scrolljump=8 " Scroll 8 lines at a time at bottom/top let html_no_rendering=1 " Don't render italic, bold, links in HTML 

Vedi anche :help slow-terminal

Detto questo, perché Vim nel terminal è più lento è al di là di me.

Nel terminal Mac Vim, se è impostato l'opacità sulla window, diminuisce notevolmente la velocità di scorrimento. Girare l' opacity=100 e blur=0 , ed è veloce come MacVim – ho impostato il tempo.

Ho avuto risultati abbastanza buoni per installare MacVim tramite homebrew e quindi usare alias vim="mvim -v" .

Ho anche riscontrato un MacVim lento in iTerm2. Ho provato tutto quello che potevo mettere le mani, ma niente sembrava aiutare. Alla fine, l'ho limitato ad una impostazione nel mio .vimrc :

 set cursorcolumn 

Quindi, l'ho rimosso, e il mio terminal MacVim è stato significativamente più veloce quando si naviga i file. Forse qualcun altro, che ha provato tutto il resto e ha triggersto questa impostazione, troverà questo utile.

set cursorline era il colpevole per me.

Non avevo notato un problema con esso finché un file specifico non è iniziato a eseguire il rendering a .25 fps, ma la distriggerszione del cursore ha fatto saltare le cose.