Como alterar os mapeamentos de teclas no Vim do Cygwin

2

Estou usando o Vim no Debian, Win Vista e WinXP (os dois últimos com o Cygwin).

Para lidar com guias com mais facilidade, mapeei <C-Left> e <C-Right> para :tab(prev|next) . Este mapeamento funciona como um encanto na máquina Debian.

Nas máquinas Windows, no entanto, pressionar <C-Left> exclui 5 linhas, até onde eu sei, e interfere na posição do cursor, enquanto <C-Right> também faz isso e, adicionalmente, entra no modo Inserir.

Pergunta: Para resumir, como posso descobrir por que o Vim se comporta da maneira como funciona? Existe uma maneira de rastrear os comandos ativos e as teclas digitadas? Poderia haver um plugin o culpado? (Eu não instalei um, talvez uma inclusão padrão pela distribuição do Cygwin ...) Se sim, como posso encontrá-lo?

Editar 1: OK, parece que recebi um primeiro rastreamento: O terminal envia por <C-Left> ' ^[[1;5D ' e, para a direita, ' ^[[1;5C ' (avaliado com o <C-V><C-Left> truque). Se o vim interpreta isso literalmente e descarta os primeiros caracteres, isso explica o comportamento estranho. Alguma idéia, como eu poderia mudar esse mapeamento chave?

Diagnóstico adicional:

  • Esse comportamento ocorre independentemente de qualquer arquivo ~/.vimrc existente (portanto, não está relacionado aos mapeamentos mencionados acima) e não é herdado de /etc/vim/vimrc , pois isso não existe na instalação padrão do Cygwin.

  • :verbose map não gera novos insights. Nada ou meus mapeamentos mencionados aparecem, com base na existência do arquivo .vimrc

  • :help <C-Left> sugere que o padrão seria um simples movimento do cursor, o que aparentemente não é o caso.

  • A versão do Vim no 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
    
por Boldewyn 30.04.2010 / 22:17

1 resposta

2

:map sem parâmetros mostrará o que você mapeou dentro vim. Qualquer mapeamento de teclado externo (como no Remapeamento de Teclado no pacote Kernel Tools) ocorrerá antes que o vim "veja" o pressionamento de tecla e, assim, obviamente, o vim não possa interpretar o original.

    
por 30.04.2010 / 22:31