Comment envoyer le signal ESC à Vim lorsque ma touche Échap ne fonctionne pas?

20

Je rencontre un problème avec la Escclé lorsque je veux revenir au mode interactif à partir du mode d'insertion. Existe-t-il une autre clé utilisée pour libérer le mode d'insertion.

Sandra Ross
la source
13
Contrôle de presse[
Thomas Dickey
3
Pas mal de suggestions sur vi.stackexchange.com/q/300/9708 aussi.
Guy
2
nouveau Macbook Pro? <grin>
Rui F Ribeiro
2
non, thinkpad x1 carbon
Sandra Ross

Réponses:

7

Nonobstant les solutions existantes, la solution conventionnelle dans Vim consiste à remapper les clés de votre .vimrcconfiguration. En fait, de nombreux utilisateurs Vim ont une clé accessible plus facilement remappée Esc. Les choix populaires sont Ctrl+ Enter, ou jj, etc.

Pour l'activer, il vous suffit de mettre quelque chose comme ceci dans votre .vimrcet de le recharger / redémarrer Vim:

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

Plus d'informations et alternatives

Konrad Rudolph
la source
1
Eyup, c'est la voie Vim. Un autre moyen courant promu par Learn Vim the Hard Way (livre) estinoremap jk <Esc>
grochmal
C'est une bonne solution, mais quel est le problème pour utiliser uniquement Ctrl + Entrée + j?
Sandra Ross
@SandraRoss Vous pouvez vraiment utiliser n'importe quelle combinaison de touches de votre choix (mais attention, certaines, par exemple Ctrl-Entrée, ne fonctionnent pas sur macOS). Cela dit, Ctrl + Entrée + j me semble plus difficile à taper, et je ne sais honnêtement pas si vous pouvez même configurer des combinaisons à trois touches avec deux touches non modificatrices (Entrée, j) dans Vim.
Konrad Rudolph
D'accord, je comprends. En fait, Ctrl + Entrée + jj ne fonctionne pas pour moi, car, en effet, j'utilise macos X. Au moins, pourriez-vous me dire ce que je dois entrer pour juste Ctrl + j.
Sandra Ross
@SandraRoss Pour cela, ça inoremap <C-j> <Esc>devrait marcher. :-)
Konrad Rudolph
32

Ctrl- [envoie le même caractère au terminal que la Escclé physique . Ce dernier est simplement un raccourci pour le premier, en général.

DopeGhoti
la source
3
J'ai eu une fois un vrai terminal vt220, et son clavier n'a pas de Escapeclé. Le pressage Ctrl+[était le seul moyen de générer Escape.
Kusalananda
11

Si vous voulez pouvoir utiliser une seule clé, en tant que solution pure * nix (sans mappages Vim), vous pouvez définir une autre clé comme Esc. Tout comme les utilisateurs d' Emacs remapper CapsLockà Ctrlcertains utilisateurs vim (moi y compris) remap CapsLockà Esc. Cela fonctionne pour tout * nix utilisant X11.

Utilisez xev -event keyboard(puis appuyez sur CapsLock) pour obtenir le code de CapsLockclé pour la clé (pour moi, c'est le code de clé 66). Ensuite, vous pouvez utiliser xmodmappour remapper la clé:

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

Pour l'obtenir lors de la connexion, vous pouvez ajouter les xmodmapexpressions ~/.Xmodmapcomme suit:

remove Lock = Caps_Lock
keycode 66 = Escape

Bien que pour la deuxième partie YMMV, puisque tous les gestionnaires d'affichage ne fonctionnent pas ~/.Xmodmap. Vous devrez peut-être ajouter xmodmap .Xmodmapà .xinitrccertains d'entre eux.

grochmal
la source
Je vois exactement ce que tu veux dire. Je l'ai vu plus tôt cette semaine
Sandra Ross
Je le ferais, mais j'utilise CapsLock comme clé de composition (:
DopeGhoti
6

Vous pouvez essayer Ctrl-C, cela fonctionne pour moi et est à mon avis plus facile que ESC. Cependant, je ne sais pas s'il est activé par défaut.

vatsug
la source
CTRL-C est ASCII 0x03, envoie SIGINT au shell - n'est pas le même que ESC.
chat
@cat Cela fonctionne essentiellement de la même manière dans vim. J'utilise toujours Ctrl-C au lieu d'Esc
Erik W
1
@cat: Vous l'obtenez gratuitement, car vim a ce gestionnaire en place. Vous n'avez rien à faire vous-même. Cette réponse est prête à l'emploi; Je viens de l'essayer. Cela fonctionne-t-il en général pour n'importe quelle application? Non, mais ce n'est pas ce qui a été demandé.
Courses de légèreté avec Monica
2
@cat: Vraiment? Le titre est "Comment envoyer le signal ESC à vim lorsque ma touche esc ne fonctionne pas?" , la seule balise est vim et le problème décrit dans la question concerne l'échappement du mode d'insertion de Vim. Voici la partie résumante de la question: "Existe-t-il une autre clé utilisée pour libérer le mode d'insertion." Si ce n'est pas spécifique à Vim et à son mode d'insertion, alors je ne sais pas ce que c'est!
Courses de légèreté avec Monica
1
@LightnessRacesinOrbit Eh bien, quand j'ai vu le titre au départ, c'était "Une autre clé utilisée pour Esc" et la question ne semblait pas du tout spécifique vim. Pardon! ¯_ (ツ) _ / ¯
cat
-3

Ctrl + F2

Est activé par défaut. Pas besoin de configurer de paramètres.

Vous passerez en mode normal, où vous pourrez le faire :q! or :wq.

Raj
la source
3
Ctrl+F2peut envoyer une fuite, mais il enverra également d'autres choses.
Kusalananda