Isso acontece comigo mesmo quando não estou usando a tela e descobri que posso voltar à normalidade limpando o terminal que executa o vim (também testei isso com o tmux, mas não com a tela:
:!clear
Execute isso constantemente, já que sou um desenvolvedor da web, 'cmd-r' tem o efeito colateral de impedir que as teclas de direção funcionem em qualquer modo, mas não consigo imaginar que seja a finalidade e não consegui encontrar nenhuma documentação sobre o que é realmente suposto fazer.
Editar: Aparentemente, este é realmente um comando mac terminal, 'Send Reset', então eu acho que isso agora é uma questão de "Qual a finalidade do comando send reset?" Explica porque eu não consegui encontrá-lo nos documentos do vim.
Isso acontece comigo mesmo quando não estou usando a tela e descobri que posso voltar à normalidade limpando o terminal que executa o vim (também testei isso com o tmux, mas não com a tela:
:!clear
Esta pergunta foi respondida aqui: ao executar a tela no OSX, o comando + r desordena as teclas de seta no vim em todas as telas
Resposta copiada:
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. Pressione CTRL + A CTRL + D para desanexar a tela do seu terminal e, em seguida, execute a tela -D -R para reconectar. Isso deve fazer com que suas teclas de setas funcionem novamente.
Se você não está na tela, mas apenas no Vim, então você pode CTRL + Z e digitar fg para o mesmo efeito.
Você também pode contornar 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 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 do 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