2

Я использую Vim под Debian, Win Vista и WinXP (последние два с Cygwin).

Чтобы упростить обработку вкладок, я сопоставил <C-Left> и <C-Right> с :tab(prev|next) . Это отображение работает как прелесть на машине Debian.

Однако на машинах Windows нажатие <C-Left> удаляет 5 строк, насколько я могу судить, и вмешивается в положение курсора, в то время как <C-Right> делает это тоже, и дополнительно входит в режим вставки.

Вопрос: Короче говоря, как я могу узнать, почему Vim ведет себя так, как он? Есть ли способ отследить активные команды и нажатия клавиш? Может ли быть плагин виновником? (Я не установил один, возможно, включение по умолчанию в дистрибутиве Cygwin ...) Если так, как я могу найти это?

Изменить 1: ОК, похоже, я получил первый след: терминал отправляет для <C-Left> ' ^[[1;5D ', а для правого ' ^[[1;5C ' (оценивается с помощью <C-V><C-Left> трюк). Если vim интерпретирует это буквально и отбрасывает первые символы, это объясняет странное поведение. Любые идеи, как я мог бы изменить это отображение клавиш?

Дополнительный диагноз:

  • Это происходит независимо от какого-либо существующего файла ~/.vimrc (поэтому он не связан с моими вышеупомянутыми сопоставлениями) и не наследуется некоторым файлом /etc/vim/vimrc , так как он не существует в установке Cygwin по умолчанию.

  • :verbose map не дает новых идей. Появится либо ничего, либо мои упомянутые сопоставления, основанные на существовании файла .vimrc

  • :help <C-Left> предполагает, что по умолчанию будет простое перемещение курсора, что, очевидно, не так.

  • Версия Вима под Cygwin:

    VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Feb 11 2010 17:36:58)
    Included patches: 1-264
    Compiled by http://cygwin.com/
    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
    +cryptv +cscope +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
    +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 -osfiletype +path_extra -perl +postscript
    +printer +profile -python +quickfix +reltime +rightleft -ruby +scrollbind
    +signs +smartindent -sniff +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/share/vim"
    Compilation:
    gcc -c -I. -Iproto -DHAVE_CONFIG_H     -g -O2 -D_FORTIFY_SOURCE=1
    Linking: gcc   -L/usr/local/lib -o vim.exe       -lm -lncurses  -liconv
    

1 ответ1

2

:map без параметров покажет, что вы отобразили внутри vim. Любое сопоставление клавиатуры вне этого (как в случае с Keyboard Remap в пакете инструментов ядра) будет выполняться до того, как vim "увидит" нажатие клавиши и, следовательно, vim не сможет интерпретировать оригинал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .