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?


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.


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+


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.