Como um bom defensor do Vim, sinto-me obrigado a dizer-lhe para aprender a usar o hjkl como teclas do cursor. Na metade da exploração do problema, achei que tinha se resolvido misteriosamente, até que percebi que estava testando usando hjkl em vez das teclas de seta reais.
De qualquer forma, agora para uma resposta real.
Em vez de desligar todas as telas e reiniciar, você pode aproveitar a capacidade da tela de se mover entre os terminais. Acerte CTRL+A
CTRL+D
para desanexar a tela do seu terminal e, em seguida, execute screen -D -R
para reconectar. Isso deve fazer com que suas teclas de setas 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 trabalhar em torno do problema da chave do cursor no Vim, mas a redefinição pode ter alterado outras opções do terminal, então é mais seguro fazer como descrito acima, para que você não veja outros problemas de exibição / teclado aleatórios. Se você quiser os remaphos de qualquer maneira, aqui estão eles:
map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>
Detalhes imundos:
Tanto o Vim como o screen usam a biblioteca ncurses para gerenciar o terminal. Uma das coisas que as ncurses estão fazendo quando assumem o controle de um terminal compatível com VT100 é alternar as teclas de seta para "modo de aplicação", o 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 reset do terminal enviado por Command + R redefine as teclas do cursor para o padrão.
Desanexar e reconectar tela faz com que ncurses retome o controle do terminal, que reaplica todas as configurações de que ele gosta, de modo que é provavelmente a maneira mais portátil e confiável de restaurar as coisas ao normal.
Códigos de controle VT100: link