it-swarm-pt.tech

Como corrigir setas Ctrl + no Vim?

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?

27
Alex B

Descubra exatamente qual sequência de escape o seu terminal envia para Ctrl+ seta digitando Ctrl+VCtrl+ 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.

28

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 Append ou Change ou outras coisas que o colocam 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, ^ 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

7
msw

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
2
trigal

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

vim ~/.vimrc
set nocompatible
0
zainengineer