理想情况下,我想从 Terminal 或 iTerm2 使用 Vim。但是,它变得慢得令人无法忍受,所以我不得不求助于使用 MacVim。MacVim 没有任何问题,但如果我只使用 Terminal/iTerm2,我的工作流程会顺畅得多。
当它慢的时候
加载文件(尤其是 Rails 文件)大约需要 1 - 1.5 秒。删除 rails.vim 可将此时间缩短至 0.5 - 1 秒。在 MacVim 中,这是即时的。
h
通过、j
、k
、滚动行和列l
。我按住键的时间越长,速度就越慢。最后,它开始跳行。我将“按键重复”设置为“快速”,将“重复前延迟”设置为“短”。使用 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
我尝试过不使用任何插件或语法高亮来运行。它打开文件的速度快了很多,但仍然不如 MacVim。但其他两个问题仍然存在。
- 为什么我的 vim 配置很慢?
- 如何提高终端或 iTerm2 中 vim 配置的速度?
答案1
我尝试过十几次在 Mac 上编译 Vim,但绝不设法获得了可用的 Vim:每次它都能工作,但是却难以忍受地缓慢和滞后。
在花费了太多时间尝试使其工作之后,我干脆放弃了,并为 MacVim 捆绑的 CLI 可执行文件创建了一个别名。
alias vim='/path/to/MacVim.app/Content/MacOS/Vim'
它不仅速度快、响应灵敏,而且具有与 MacVim 完全相同的功能,只要它在终端中有意义。从那时起,使用 MacVim 和/或 Vim 对我来说就没什么区别了,我使用其中一个还是另一个只取决于上下文。而不是一个比另一个更好。
为什么我的 vim 配置很慢?如何提高 Terminal 或 iTerm2 中 vim 配置的速度?
通过使用 MacVim 的预编译二进制文件。
有一天也尝试一下 Linux。只有当您从未在 Linux 机器上使用过 GVim 或 Vim 时,MacVim 才会很快。
答案2
我发现任何影响显示的插件或设置(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
另请参阅:help slow-terminal
话虽如此,为什么终端中的 Vim 速度较慢,这超出了我的能力范围。
答案3
在 Mac Terminal Vim 中,如果窗口设置了不透明度,滚动速度会大大降低。转动opacity=100
和blur=0
,它和 MacVim 一样快——我计时了。
答案4
set cursorline
是我的罪魁祸首。
直到某个特定文件开始以 .25 fps 的速度渲染时,我才注意到它的问题,但禁用 cursorline 后速度又加快了。