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.

Sandra Ross
fonte
13
Press control[
Thomas Dickey
3
Algumas sugestões também estão disponíveis no vi.stackexchange.com/q/300/9708 .
Guy
2
novo Macbook Pro? <grin>
Rui F Ribeiro
2
não, thinkpad x1 carbon #
Sandra Ross

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

Konrad Rudolph
fonte
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.

DopeGhoti
fonte
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.

grochmal
fonte
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.

vatsug
fonte
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.

Raj
fonte
3
Ctrl+F2pode enviar uma fuga, mas também enviará outras coisas.
Kusalananda