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.
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:
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.
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é:
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.
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.
[
Réponses:
Nonobstant les solutions existantes, la solution conventionnelle dans Vim consiste à remapper les clés de votre
.vimrc
configuration. 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
.vimrc
et de le recharger / redémarrer Vim:Plus d'informations et alternatives
la source
inoremap jk <Esc>
inoremap <C-j> <Esc>
devrait marcher. :-)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.
la source
Escape
clé. Le pressageCtrl+[
était le seul moyen de générerEscape
.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 utiliserxmodmap
pour remapper la clé:Pour l'obtenir lors de la connexion, vous pouvez ajouter les
xmodmap
expressions~/.Xmodmap
comme suit:Bien que pour la deuxième partie YMMV, puisque tous les gestionnaires d'affichage ne fonctionnent pas
~/.Xmodmap
. Vous devrez peut-être ajouterxmodmap .Xmodmap
à.xinitrc
certains d'entre eux.la source
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.
la source
0x03
, envoie SIGINT au shell - n'est pas le même que ESC.vim
. Pardon! ¯_ (ツ) _ / ¯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
.la source
Ctrl+F2
peut envoyer une fuite, mais il enverra également d'autres choses.