ao executar a tela no OSX, o comando + r altera as teclas de seta no vim em todas as telas

15

Como você desenrola isso? porque você acaba pressionando o comando r o tempo todo para recarregar o navegador e, muitas vezes, está no terminal.

Como não descobri como reativar as teclas de seta, atualmente mato todas as minhas telas e reinicio a tela, o que é uma dor.

Der Hochstapler
fonte

Respostas:

28

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+Dpara desconectar a tela do seu terminal e, em seguida, execute screen -D -Rpara 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+Ze digitar fgpara 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 [ Apara 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

Jander
fonte
Outro problema pode ser o vim tipo de terminal confuso, consulte chaves desarrumada no vim ao executar tmux dentro
Kynan
obrigado por esta solução! isso tem me incomodado como desenvolvedor web. no navegador, você pressiona muito o cmd-r para atualizar a tela e, ocasionalmente, devo ter atingido o cmd-r no vim por acidente. eu não conseguia descobrir por que minhas teclas de seta estavam sendo apagadas até agora. e para você o hjkl purista por aí, a principal razão pela qual não uso o hjkl é porque eles não estão disponíveis para o movimento do cursor no modo de inserção. resolver esse problema para mim e eu vou reconsiderar.
rev
6

Você pode corrigir isso de maneira rápida e fácil com :!reset

GlyphGryph
fonte
1

Se você estiver usando o iTerm, poderá recuperar sua sessão do vim pressionando command+decommand+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.

Adam Grant
fonte
1

Mapeio Command-r para "Ignorar" nos mapeamentos de teclas do iTerm.

Captura de tela da caixa de diálogo de preferências do iTerm2

Christian Long
fonte