Vim 配置在终端和 iTerm2 中很慢,但在 MacVim 中没有

Jey*_*ran 12 performance terminal vim vimrc iterm2

理想情况下,我想从终端或 iTerm2 使用 Vim。然而,它变得难以忍受,所以我不得不求助于使用 MacVim。MacVim 没有任何问题,但是如果我只使用 Terminal/iTerm2,我的工作流程会顺畅得多。

当它慢

  • 加载文件,特别是 Rails 文件大约需要 1 - 1.5 秒。删除 rails.vim 将这个时间减少到 0.5 - 1 秒。在 MacVim 中,这是即时的。

  • 通过h, j, k,滚动行和列l。我按住键的时间越长,它逐渐变慢。最终,它开始跳行。我将 Key Repeat 设置为 Fast,Delay until Repeat 设置为 Short。

  • 使用 10 - 15 分钟后,使用 ctrlp 或 Command-T 等插件会变得非常滞后。我会输入一个字母,等待 2 - 3 秒,然后输入下一个。

我的设置

11 英寸 MacBook Air,运行 Mac OS X 版本 10.7.3(1.6 Ghz Intel Core 2 Duo,4 GB DDR3)

我的点文件

> 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
Run Code Online (Sandbox Code Playgroud)

我试过在没有任何插件或语法高亮的情况下运行。它打开文件的速度要快得多,但仍然不如 MacVim 快。但另外两个问题仍然存在。

  1. 为什么我的 vim 配置很慢?
  2. 如何在终端或 iTerm2 中提高 vim 配置的速度?

Jay*_*Jay 12

我发现任何影响显示的插件或设置(cursorline、cursorcolumn、vim-powerline、vim-airline、matchit.vim 等)都会显着降低终端中的 Vim 速度。

以下是我的 .vimrc 中的一些行,以加快速度:

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
Run Code Online (Sandbox Code Playgroud)

另见 :help slow-terminal

也就是说,为什么终端中的 Vim 更慢是我无法理解的。


rom*_*inl 9

我已经尝试了十几次在我的 Mac 上编译 Vim,但我从来没有设法获得一个可用的 Vim:每次它都能工作,但它慢得令人无法忍受。

在浪费太多时间试图让它工作之后,我只是放弃了毛巾并为 MacVim 的捆绑 CLI 可执行文件创建了一个别名。

alias vim='/path/to/MacVim.app/Content/MacOS/Vim'
Run Code Online (Sandbox Code Playgroud)

它不仅速度快、反应灵敏,而且具有与 MacVim 完全相同的功能,只要它在终端中有意义。从那时起,使用 MacVim 和/或 Vim 对我来说没有任何区别,我是否使用一种或另一种仅由上下文决定。不是一个比另一个好。

为什么我的 vim 配置很慢?如何在终端或 iTerm2 中提高 vim 配置的速度?

通过使用 MacVim 的预编译二进制文件。

有一天也试试 Linux。MacVim 只有在您从未在 linux 机器上使用过 GVim 或 Vim 时才会很快。


小智 6

在 Mac Terminal Vim 中,如果您在窗口上设置了不透明度,则会大大降低滚动速度。转动opacity=100blur=0,它和 MacVim 一样快——我计时了。