Como um bom pequeno advogado do Vim, sinto-me obrigado a dizer para você aprender a usar o hjkl como teclas do cursor. No meio da exploração do problema, pensei que ele havia se resolvido misteriosamente, até que percebi que estava testando usando hjkl em vez das teclas de seta reais.
Enfim, agora para uma resposta real.
Em vez de desligar todas as telas e reiniciar, você pode tirar proveito da capacidade da tela de se mover entre terminais. Pressione CTRL+A
CTRL+D
para desconectar a tela do seu terminal e, em seguida, execute screen -D -R
para reconectar. Isso deve fazer com que as teclas de seta funcionem novamente.
Se você não estiver na tela, mas apenas no Vim, poderá CTRL+Z
e digitar fg
para o mesmo efeito.
Você também pode solucionar o problema da tecla do cursor no Vim, mas a redefinição pode ter alterado outras opções do terminal, por isso é mais seguro fazer o que foi descrito acima, para que você não veja outros problemas aleatórios na tela / no teclado. Se você quiser os remapeamentos de qualquer maneira, aqui estão eles:
map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>
Detalhes sujos:
O Vim e a tela usam a biblioteca ncurses para gerenciar o terminal. Uma das coisas que a ncurses está fazendo quando assume o controle de um terminal compatível com o VT100 é alternar as teclas de seta para o "modo de aplicativo", que altera os códigos que eles emitem. A tecla de seta para cima, por exemplo, muda de Esc
[
A
para Esc
O
A
. O código de controle VT100 que ele emite para fazer isso é Esc
[
?
1
h
. O comando de redefinição do terminal enviado por Command + R redefine as teclas do cursor para o padrão.
Desanexar e recolocar a tela faz com que ncurses retome o controle do terminal, o que reaplica todas as configurações de que gosta, então essa é provavelmente a maneira mais portátil e confiável de restaurar as coisas ao normal.
Códigos de controle VT100: http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm
Você pode corrigir isso de maneira rápida e fácil com
:!reset
fonte
Se você estiver usando o iTerm, poderá recuperar sua sessão do vim pressionando
command+d
ecommand+w
Por quê?
command+d
dividirá o painel do terminal, restaurando magicamente o de onde você veio.command+w
agora fechará o painel dividido que você acabou de abrir.fonte
Mapeio Command-r para "Ignorar" nos mapeamentos de teclas do iTerm.
fonte