Por que o cmd-r atrapalha o Vim no mac? O que ele está realmente tentando fazer?


19

Atravesse isso constantemente, já que sou desenvolvedor da Web, 'cmd-r' tem o efeito colateral de impedir que as teclas de seta funcionem de qualquer modo, mas não consigo imaginar esse é o objetivo e não consegui encontrar qualquer documentação sobre o que realmente deve fazer.

Edit: Aparentemente, este é realmente um comando do terminal mac, 'Send Reset', então eu acho que isso agora é uma pergunta de "Para que finalidade o comando send reset serve?" Explica por que não consegui encontrá-lo nos documentos do vim.

Respostas:


16

Para evitar esse aborrecimento, refiro o Command-R para "Ignorar" no mapeamento de chaves do iTerm.

insira a descrição da imagem aqui


Obrigado. Isso estava ficando terrivelmente irritante.
ThinkingInBits

10

Isso acontece comigo mesmo quando não estiver usando a tela e descobri que posso voltar à normalidade limpando o terminal executando o vim (também testei isso com o tmux, mas não com a tela:

:!clear

6

Esta pergunta foi respondida aqui: ao executar a tela no OSX, o comando + r cria teclas de seta no vim em todas as telas

Resposta copiada:

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 execute a tela -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á pressionar 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 remapings 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 do 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 o ncurses retome o controle do terminal, 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


Sim, descobri que depois que postei, vi "O comando de redefinição de terminal enviado pelo Command + R redefine as teclas do cursor para o padrão.", Ainda seria ótimo saber exatamente por que isso acontece. Sinceramente, sou muito interessante em saber qual é o uso pretendido desse comando, o que não responde.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.