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