在终端机和iTerm2中,Vim配置缓慢,但在MacVim中却没有


12

理想情况下,我想使用Terminal或iTerm2中的Vim。但是,它变得异常缓慢,所以我不得不使用MacVim。MacVim没什么问题,但是如果我仅使用Terminal / iTerm2,我的工作流程将会更加流畅。

当它慢

  • 加载文件,尤其是Rails文件大约需要1-1.5s。移除rails.vim的时间减少到0.5-1s。在MacVim中,这是瞬时的。

  • 通过通过行和列滚动hjkl。我按住琴键的时间越长,它会逐渐变慢。最终,它开始跳行。我将“密钥重复”设置为“快速”,并将“直到重复的延迟”设置为“短”。

  • 使用10到15分钟后,使用诸如ctrlp或Command-T之类的插件会变得非常缓慢。我会输入一个字母,等待2-3s,然后输入下一个。

我的设定

运行Mac OS X 10.7.3版(1.6 GHz英特尔酷睿2双核处理器,4 GB DDR3)的11英寸MacBook Air

我的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

我尝试在没有任何插件或语法突出显示的情况下运行。它打开文件的速度更快,但仍不如MacVim快。但是其他两个问题仍然存在。

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

Answers:


8

我已经尝试了很多次,以便在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才是快速的。


我尝试使用MacVim的版本。快得多了!仍然不如使用MacVim本身快,但这是可以容忍的。奇怪的是,是什么使Linux上的Vim比OS X终端中的Vim快得多?
杰伊·巴拉汉德兰

1
我不知道。在家里,我在小型和老式的Dell Inspiron上运行Ubuntu,与文本相关的所有内容都比我在工作中使用的四核Mac Pro快得多。特别是我整天使用的MacVim / Gvim。也许抽象级别更低,而堆叠的框架则更少。我不知道。
romainl 2012年

我希望看到更多关于此的帖子。应该可以使iTerm2的运行速度几乎与MacVim一样快。
xer0x 2012年

12

我发现,任何会影响显示的插件或设置(光标线,游标列,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速度较慢,这超出了我。


6

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


为了澄清,这是指终端应用程序的不透明度和模糊设置,而不是Vim本身的设置。不过,它的工作原理就像一种魅力,感谢小费!
user72923 2013年

很好,我一直在寻找导致月份变慢的原因,并且我尝试了所有设置,除了该设置(它是透明的,没有图片,所以看起来像是不透明的,但不是)
Ismael

3

通过自制软件安装MacVim,然后使用,我取得了很好的效果alias vim="mvim -v"


2

set cursorline 是我的罪魁祸首。

直到一个特定的文件开始以.25 fps的速度渲染时,我才注意到它存在问题,但是禁用光标线会加快备份速度。


1

我在iTerm2中也遇到了运行缓慢的终端MacVim。我已经尽力尝试了一切,但似乎无济于事。最终,我将其范围缩小到了.vimrc

set cursorcolumn

因此,我将其删除,并且在浏览文件时,我的终端MacVim明显更快。也许其他尝试过其他所有功能并启用了此设置的人会发现此功能有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.