Como enviar o sinal ESC para o vim quando minha tecla esc não funciona?
20
Estou tendo um problema com a Esctecla quando quero retornar ao modo interativo a partir do modo de inserção. Existe outra chave usada para liberar o modo de inserção.
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:
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.
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:
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.
[
Respostas:
Não obstante as soluções existentes, a solução convencional no Vim é remapear as chaves na sua
.vimrc
configuraçã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
.vimrc
e recarregar / reiniciar o Vim:Mais informações e alternativas
fonte
inoremap jk <Esc>
inoremap <C-j> <Esc>
deve funcionar. :-)Ctrl- [envia o mesmo caractere para o terminal que a Escchave física . O último é simplesmente um atalho para o primeiro, geralmente.
fonte
Escape
tecla. PressionarCtrl+[
era a única maneira de gerarEscape
.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 usarxmodmap
para remapear a chave:Para obter isso no login, você pode adicionar as
xmodmap
expressões da~/.Xmodmap
seguinte maneira:Embora para a segunda parte YMMV, uma vez que nem todos os gerenciadores de exibição são executados
~/.Xmodmap
. Você pode precisar adicionarxmodmap .Xmodmap
a.xinitrc
alguns deles.fonte
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.
fonte
0x03
, envia SIGINT para o shell - não é o mesmo que ESC.vim
. Desculpe! ¯_ (ツ) _ / ¯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
.fonte
Ctrl+F2
pode enviar uma fuga, mas também enviará outras coisas.