Estou usando PuTTY -> Suse box -> vim 7.2
combo para edição e deseja remapear Ctrl + setas para uma tarefa específica. Mas, por alguma razão, o Vim ignora o atalho e entra no modo de inserção e insere o caractere "D" (à esquerda) de "C" (à direita).
Qual parte da minha configuração de teclado/terminal é responsável e como corrigi-la?
Descubra exatamente qual sequência de escape o seu terminal envia para Ctrl+ seta digitando Ctrl+V, Ctrl+ seta no modo de inserção: insere o caractere ESC
à esquerda (mostrado como ^[
in vim) literalmente, seguido pelo resto da sequência de escape. Diga ao vim sobre essas seqüências de escape com algo como
map <ESC>[5D <C-Left>
map <ESC>[5C <C-Right>
map! <ESC>[5D <C-Left>
map! <ESC>[5C <C-Right>
Lembro-me de que o PuTTY possui uma configuração padrão para modo Teclas do Cursor do Aplicativo isso é inconveniente (eu esqueço o porquê); talvez você queira alternar essa configuração primeiro.
Observe que, embora as seqüências de escape variem entre os terminais, os conflitos (ou seja, uma sequência de escape que corresponde a chaves diferentes em terminais diferentes) são raros, portanto, não há necessidade específica de tentar aplicar os mapeamentos apenas em um tipo de terminal específico.
Sua melhor aposta é provavelmente olhar para a configuração do modo PuTTY Application Cursor Keys .
As sequências padrão enviam ESC como prefixo e [
seguido por A
ppend ou C
hange ou outras coisas que o colocam no modo de inserção.
Uma versão um pouco mais explícita do escape ^ V pode ser vista com od (1). Aqui estou eu digitando ^ Up, ^ Down, ^ Right, ^ Esquerda no meu terminal:
$ od -a
0000000 esc [ 1 ; 5 A esc [ 1 ; 5 B esc [ 1 ;
0000020 5 C esc [ 1 ; 5 D
Então, meu terminal envia ^[[1;5A
quando pressiono Ctrl + ↑
Encontrei uma solução melhor aqui: http://vim.wikia.com/wiki/Fix_arrow_keys_that_display_A_B_C_D_on_remote_Shell
Basta colocar esta string no seu .vimrc
Arquivo:
:set term=cons25
Atualização
Copie este arquivo para o seu /home
, renomeando-o .vimrc
:
/usr/share/vim/vim_VERSION_/vimrc_example.vim
para este e outros problemas de teclado do vim, eu simplesmente
vim ~/.vimrc
set nocompatible