Терминал Vim перерисовывает проблемы в OS X Lion - PullRequest
2 голосов
/ 07 августа 2011

Недавно перешел с MacVim на стандартный vim, поэтому я могу заставить себя перемещаться по vim без помощи оболочки MacVim. С тех пор у меня возникли странные проблемы с перерисовкой. Я проверил это как в iTerm2, так и в стандартном терминале в Lion.

Когда я редактирую файлы, открываю NERDTree и т. Д., Фрагменты последнего окна появляются в моем текущем буфере. Иногда ".. (вверх dir)" остается в новом буфере. Нижняя строка состояния дублирует себя. Единственное, что, кажется, избавляется от этого - это вручную вызывать ": перерисовать!".

Я собрал короткое видео, чтобы показать, о чем я говорю, так как мой Google-фу не дал результатов. Видео Демо

Это действительно чертовски неприятно для меня. У кого-нибудь есть идеи о том, что может быть причиной этого?

Обновление

Я дважды проверил, и Vim и iTerm2 / Terminal настроены на UTF-8 для кодирования символов. Я даже включил этот параметр в iTerm2: Символы двойной ширины: Считайте символы неоднозначной ширины двойной шириной.

ECHO $TERM выход (одинаково для iTerm2 и стандартного терминала) xterm-256color

:version вывод

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Aug  5 2011 10:58:31)
MacOS X (unix) version
Included patches: 1-260
Compiled by chris@nix
Huge version with MacVim 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_gui +diff +digraphs
+dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path +float +folding -footer +fork() +fullscreen -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 +odbeditor +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 +transparency +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"
  system gvimrc file: "$VIM/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe  -DMACOS_X_UNIX -no-cpp-precomp  -g -O2 -isysroot /Developer/SDKs/MacOSX10.7.sdk -mmacosx-version-min=10.7 -arch x86_64 -D_FORTIFY_SOURCE=1
     -I/System/Library/Frameworks/Tcl.framework/Headers  -D_REENTRANT=1  -D_THREAD_SAFE=1  -D_DARWIN_C_SOURCE=1
Linking: gcc   -L.  -L.       -Wl,-syslibroot,/Developer/SDKs/MacOSX10.7.sdk -mmacosx-version-min=10.7 -arch x86_64 -L/usr/local/lib -o Vim -framework Cocoa -framework Carbon      -lncurses -liconv -framework Cocoa    -fstack-protector -L
/usr/local/lib  -L/System/Library/Perl/5.12/darwin-thread-multi-2level/CORE -lperl -lm -lutil -lc -framework Python  -F/System/Library/Frameworks -framework Tcl -framework CoreFoundation -lruby.1.9.1 -lobjc -L/Users/chris/.rvm/rubies/ruby
-1.9.2-p290/lib

Дополнительные обновления Обновление строки состояния, похоже, ничего не меняет. Все еще волнуется и имеет ту же проблему. Есть другие идеи?

Ответы [ 2 ]

2 голосов
/ 07 августа 2011

Это иногда происходит, если vim и ваш терминал не согласны с используемой кодировкой символов. Например, если vim хочет нарисовать символ, используя многобайтовую последовательность UTF-8, и ваш терминал не совсем понимает это и рисует два символа, тогда vim и ваш терминал не согласны с результирующей позицией курсор. Это может привести к всевозможным ошибкам элементов экрана.

Используйте команду :set encoding в vim, чтобы установить кодировку, которая согласуется с настройками вашего терминала.

1 голос
/ 18 августа 2011

Похоже, я наконец понял это. Похоже, это была проблема с оборудованием / драйвером для Lion и моего MBP. Вышел Lion 10.7.1 и после обновления проблемы исчезли. У меня была небольшая странность с фоновыми цветами, но как только я согласовал свой терминальный цвет bg с моей цветовой схемой vim, все стало великолепно. Спасибо всем за предложения.

...