如何更改 Cygwin 的 Vim 中的键映射

如何更改 Cygwin 的 Vim 中的键映射

我在 Debian、Win Vista 和 WinXP(后两者使用 Cygwin)下使用 Vim。

为了更轻松地处理制表符,我将<C-Left>和映射<C-Right>:tab(prev|next)。此映射在 Debian 计算机上非常有效。

<C-Left>但是,据我所知,在 Windows 机器上,按下会删除 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 版本:

    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

:map没有参数将显示您已映射的内容里面vim。任何超出此范围的键盘映射(例如来自 Kernel Tools 软件包中的 Keyboard Remap)都将在 vim“看到”按键之前进行,因此,显然 vim 无法解释原始按键。

相关内容