Como enviar o sinal ESC para o vim quando minha tecla esc não funciona?


Respostas:


7

Não obstante as soluções existentes, a solução convencional no Vim é remapear as chaves na sua .vimrcconfiguração. De fato, muitos usuários do Vim têm uma chave acessível mais fácil remapeada para Esc. As opções populares são Ctrl+ Enter, ou jjetc.

Para habilitar isso, basta colocar algo como o seguinte no seu .vimrce recarregar / reiniciar o Vim:

" Shift-Enter
inoremap <S-CR> <Esc>
" Double-j
inoremap jj <Esc>

Mais informações e alternativas


11
Eyup, esse é o jeito do Vim. Outra maneira comum promovida por Learn Vim the Hard Way (book) éinoremap jk <Esc>
grochmal

Essa é uma boa solução, mas qual é o problema de usar apenas Ctrl + Enter + j?
Sandra Ross

@SandraRoss Você pode realmente usar qualquer combinação de teclas que desejar (apesar de alguns, por exemplo, Ctrl-Enter, não funcionarem no macOS). Dito isto, Ctrl + Enter + j me parece mais difícil de digitar, e sinceramente não sei se você pode configurar combinações de três teclas com duas teclas não modificadoras (Enter, j) no Vim.
Konrad Rudolph

Ok, eu entendo. De fato, Ctrl + Enter + jj não funciona para mim, porque, de fato, eu uso o macos X. Pelo menos, você poderia me dizer o que eu tenho que inserir apenas Ctrl + j.
Sandra Ross

@SandraRoss Por isso, inoremap <C-j> <Esc>deve funcionar. :-)
Konrad Rudolph

32

Ctrl- [envia o mesmo caractere para o terminal que a Escchave física . O último é simplesmente um atalho para o primeiro, geralmente.


3
Uma vez eu tive um terminal vt220 real e seu teclado não possui uma Escapetecla. Pressionar Ctrl+[era a única maneira de gerar Escape.
Kusalananda

11

Se você quiser usar uma única chave, como uma solução * nix pura (sem mapeamentos do Vim), poderá definir outra chave como Esc. Assim como os usuários do Emacs remapearam CapsLockpara Ctrlalguns usuários do Vim (eu incluído) remapear CapsLockpara Esc. Isso funciona para qualquer * nix usando o X11.

Use xev -event keyboard(e pressione CapsLock) para obter o código da CapsLockchave (para mim é o código 66). Então você pode usar xmodmappara remapear a chave:

xmodmap -e 'remove Lock = Caps_Lock' -e 'keycode 66 = Escape'

Para obter isso no login, você pode adicionar as xmodmapexpressões da ~/.Xmodmapseguinte maneira:

remove Lock = Caps_Lock
keycode 66 = Escape

Embora para a segunda parte YMMV, uma vez que nem todos os gerenciadores de exibição são executados ~/.Xmodmap. Você pode precisar adicionar xmodmap .Xmodmapa .xinitrcalguns deles.


Sei exatamente o que você quer dizer. Eu vi que no início desta semana
Sandra Ross

Eu faria isso, mas uso CapsLock como minha chave de composição (:
DopeGhoti

6

Você pode tentar Ctrl-C, que funciona para mim e é, na minha opinião, mais fácil que o ESC. No entanto, não tenho certeza se ele está ativado por padrão.


CTRL-C é ASCII 0x03, envia SIGINT para o shell - não é o mesmo que ESC.
cat

@cat Funciona basicamente da mesma forma no vim. Eu estou sempre usando Ctrl-C em vez de Esc
Erik W

11
@cat: Você o obtém gratuitamente, porque o vim tem esse manipulador no lugar. Você não precisa fazer nada sozinho. Esta resposta funciona imediatamente; Eu apenas tentei. Funciona em geral para qualquer aplicação? Não, mas não foi isso que foi solicitado.
Lightness Races com Monica

2
@cat: Sério? O título é "Como enviar o sinal ESC para o vim quando minha tecla esc não funciona?" , a única tag é vim , e o problema descrito na pergunta é sobre como escapar do modo de inserção do Vim. Aqui está a parte resumida da pergunta: "Existe outra chave usada para liberar o modo de inserção"? Se isso não é específico para o Vim e seu modo de inserção, não sei o que é!
Lightness Races com Monica

11
@LightnessRacesinOrbit Bem, quando vi o título inicialmente, era "Outra chave usada para Esc" e a pergunta não parecia específica vim. Desculpe! ¯_ (ツ) _ / ¯
cat

-3

Ctrl + F2

Está ativado por padrão. Não há necessidade de definir configurações.

Você passará para o modo normal, onde poderá fazer :q! or :wq.


3
Ctrl+F2pode enviar uma fuga, mas também enviará outras coisas.
Kusalananda
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.