Como corrigir setas Ctrl + no Vim?

26

Estou usando o Putty -> Suse box -> vim 7.2combo para edição e quero remapear o 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?

Alex B
fonte
PuTTY não envia seqüências úteis e distintas para as setas de controle. Nenhuma das respostas sugeridas está correta (ou útil).
Thomas Dickey 13/01

Respostas:

27

Descubra exatamente qual sequência de escape o seu terminal envia para Ctrl+ seta digitando Ctrl+ V, Ctrl+ arrow no modo de inserção: isso inserirá o ESCcaractere inicial (mostrado como ^[no vim) literalmente, seguido pelo restante 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>

Eu me lembro que Putty tem uma configuração padrão para o modo Application Cursor Keys que é 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 particular de tentar aplicar os mapeamentos apenas em um tipo de terminal específico.

Gilles 'SO- parar de ser mau'
fonte
Como posso saber qual sequência de escape é enviada?
Alex B
@ Alex: Eu tentei esclarecer minha explicação, reclame se você ainda não entende minha primeira frase.
Gilles 'SO- stop be evil'
Você também pode executar od -aou od -cse você digitar octal e digite as teclas em questão. Veja "adicionado" na minha resposta para um exemplo.
RSU
Desculpe por voltar a esta pergunta tão tarde, mas descobri que o PuTTY ainda envia teclas de cursor do aplicativo para o terminal, mesmo depois de desligá-lo completamente . Estou sem saber o que mais devo ajustar para fazer desaparecer.
Alex B
@ Alex: Você não precisa fazê-lo desaparecer, você pode informar seus aplicativos sobre eles (que eu achei o caminho de menor resistência). Ou você pode substituir o PuTTY por uma das alternativas, como mintty e Cygwin ssh (mas isso está ficando fora de tópico para este site).
Gilles 'SO- stop be evil'
7

Sua melhor aposta é provavelmente examinar a configuração do modo Application Cursor Keys do PuTTY .

As seqüências padrão são enviadas ESCcomo prefixo e [seguidas de Append ou hange Cou outras coisas, lançando você no modo de inserção.

adicionado, seguindo Gilles

Uma versão um pouco mais explícita do escape ^ V pode ser vista com od (1). Aqui estou eu digitando ^ Up, ^ Down, ^ Right, ^ Left 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;5Aquando pressiono Ctrl+

msw
fonte
Desativar o modo Teclas do Cursor do Aplicativo não parece ajudar.
Alex B
0

para este e outros problemas de teclado do vim, eu simplesmente

vim ~/.vimrc
set nocompatible
zainengineer
fonte