La principale raison pour laquelle j'aime vim over emacs est que ma distance de déplacement de la main par rapport à la ligne d'arrivée est très faible (même en tant que programmeur). Cependant, la seule fois où je fais cela quitte le mode insertion en appuyant sur Echap.
J'ai récemment appris que je pouvais aussi utiliser Ctrl + C pour quitter le mode insertion. Cependant, ce n'est pas vraiment une amélioration.
Comment puis-je quitter le mode insertion sans que mes mains quittent la ligne d'arrivée et sans avoir un impact important sur ce que j'ai la capacité de taper? Remarque: j’utilise un vim essentiellement vanille avec une disposition de clavier dvorak, bien que j'aimerais aussi entendre les solutions pour une disposition qwerty.
key-bindings
insert-mode
keyboard-layout
escape
durron597
la source
la source
Réponses:
La liaison courante que vous verrez est jj , car elle fonctionne bien pour les dispositions QWERTY si vous utilisez le positionnement de la ligne de base.
Dans ce cas, pour taper un littéral
jj
, vous devez attendre 1 seconde (par défaut) avant de taper le deuxième caractère. (voir:help 'timeout'
pour plus de détails)Il y a aussi
c-o
qui vous fera sortir de l'insertion, vous permettant de faire une commande normale, puis vous remet aussitôt en insertion.http://vim.wikia.com/wiki/Avoid_the_escape_key
la source
j
est lac
clé. Donc, ce ne serait pas trop mal (tapercc
). Je pourrais aussi lierhh
(qwertyj
key = dvorakh
), ce qui ne me lancerait que si je tapaisshhhhhhh
ou quelque chose du genre.jk
? Trouvez deux clés adjacentes dans Dvorak, mais pas les combinaisons courantes dans votre langue préférée.tn
, par exemple, est l’équivalent positionnel dejk
.jk
/kj
quitter le mode normal même dans Dvorak; ce sont les touches "c" et "v" d'un clavier QWERTY, elles sont donc faciles à utiliser pour le pointeur gauche et le majeur.ii
plutôt. Oui, vous devez déplacer vos doigts hors de la ligne d'arrivée, mais cela reste confortable. Et plus important encore, vous pouvez passer d'un mode à l'autre sans bouger votre doigt.En plus des alternatives intégrées
<C-[>
et<C-c>
de la<Esc>
clé citée par d'autres, une autre solution populaire consiste à reconfigurer<CapsLock>
en une évasion supplémentaire. Ceci à la fois sur un clavier Qwerty et Dvorak.De cette façon, vous pouvez appuyer très facilement sur Esc avec le petit doigt de gauche, sans retirer vos mains de HomeRow (d'ailleurs, CapsLock est le lieu où Escape était auparavant sur les claviers lorsque vi a été inventé).
Le remappage peut être fait:
sous Linux, varie en fonction de l’environnement de bureau. Par exemple, sur Linux Mint / Cinnamon, il suffit de sélectionner l’option appropriée dans le menu Menu-> Clavier-> Dispositions du clavier-> Verrouillage Maj. Alternativement, mais moins facilement, il peut être remappé au niveau Xorg en utilisant le programme xmodmap et en l'exécutant sous le
.Xmodmap
fichier suivant :Le système peut être configuré pour l'exécuter automatiquement à chaque connexion en plaçant de manière stratégique les lignes de script de shell suivantes (en supposant que celles-ci
.Xmodmap
se trouvent sur votre~
répertoire personnel) dans la chaîne de fichiers provenant de sources auto-connectées:C'est toutefois délicat, car les fichiers réellement obtenus varient en fonction de l'environnement (de bureau) utilisé. Par exemple, xmodmap est appelé comme une entrée dans les "Applications de démarrage" de Cinnamon (ce qui me permet de faire plus que la personnalisation du remappage de clé de l'interface graphique).
Certaines personnes vont encore plus loin et programment la clé CapsLock comme suit:
Ctrl
clé en appuyant et en maintenant,Esc
touche en appuyant dessus et en le relâchant rapidement.Cela peut être fait sous Windows et Mac en configurant / programmant correctement l'utilitaire de remappage correspondant (des astuces AutoHotkey sont disponibles ici et une vérification de KeyRemap4MacBook ici ). Sous Linux, en utilisant le programme xcape .
la source
Ctrl
touche (à la position normale) sans tordre le petit doigt: vous pouvez appuyer dessus avec la paume externe de la main, comme il est bien décrit ici (j’ai trouvé ce joli tour astucieux sur le Net, le temps de le donner retour :) et bravo à l'inventeur)Ctrl
surAlt
(Cmd
) et inversement, alors<C-[>
brille vraiment. Pinky est faible, le pouce est fort. Sur QWERTY, vous n’avez même pas besoin de quitter la ligne d'arrivée pour cela, sur Dvorak, ce n’est pas si bon, mais acceptable.Les mappages que j'utilise sont:
De cette façon, vous pouvez simplement frapper jet ken même temps, sans avoir à vous soucier de celui sur lequel vous appuyez en premier.
la source
<C-[>
et<C-c>
sont deux alternatives natives à<Esc>
.Voir
:help i_<esc>
et:help i_ctrl-c
qui explique la différence entre<C-c>
et<Esc>
.la source
<C-[>
symétrie est bonne (les deux petits doigts se déplacent dans des directions opposées).<C-c>
n'est pas exactement la même chose que<Esc>
.<C-c>
peut casser subtilement les plugins et les autocmds.Vous pouvez mapper Caps Locksur Control sans utiliser de programme externe :
setxkbmap -option caps:ctrl_modifier
Ceci s’ajoute Controlà la ligne de départ, ce qui permet d’appuyer plus facilement sur tous les traits de contrôle modifiés, y compris Ctrl-[et Ctrl-Cqui sortent tous deux du mode Insertion dans Vim.
Alternativement, au bas de sa réponse, Giovanni suggère de mapper Caps Lockpour effectuer les deux Control et en Escape fonction de la longueur de la presse, mais cela nécessite l'installation d'un logiciel supplémentaire.
la source
Je suggérerais d'utiliser mon plugin vim-easyescape .
Le problème avec une simple séquence de mappage
inoremap jj <ESC>
est que Vim mettra en pause chaque fois que vous tapez jou ken mode insertion (il attend la clé suivante pour déterminer s'il convient d'appliquer le mappage). La pause provoque une distraction visuelle que vous ne remarquerez peut-être pas. vim-easyescape ne rencontre pas ce problème et prend en charge le délai d'expiration personnalisé.la source
Dans les terminaux vi et Vim, alt+
single-normal-mode-key
fonctionnera pour des éditions rapides dans la plupart des terminaux.Cela fonctionne car la plupart des terminaux envoient le modificateur alt en tant que caractère d'échappement. Par exemple, lorsque vous tapez, alt+kl'émulateur de terminal envoie deux caractères au programme en cours d'exécution:
esc
,k
. Vi et Vim interprètent cela comme on peut s'y attendre. il quitte le mode insertion (à cause de l'échappement) et exécute la commande de mode normal (dans l'exemple, déplacer le curseur d'une ligne vers le haut).Cela peut être un moyen pratique de quitter le mode insertion si votre clavier a la touche Alt adjacente à la barre d'espacement (pour pouvoir appuyer dessus avec le pouce, laissant ainsi vos doigts sur la rangée de base), tant que vous utilisez un émulateur de terminal. avec ce comportement et ne vous dérange pas d'exécuter une commande en mode normal.
la source
single-normal-mode-key
? Vous voulez dire échapper?FWIW j'utilise:
Cela ressemble à frapper Retour. J'utilise
;
également le leader pour d'autres mappages en mode insertion.La seule fois où j'ai eu besoin de taper ';' + lettre est quand code de golf; Je n'ai pas eu de conflits autrement.
la source
J'utilise Ctrl+ 3depuis un certain temps, je trouve qu'il est plus facile de taper que la plupart des alternatives et semble bien fonctionner (du moins sous Linux). Mon Caps Lockest mappé sur Ctrl, il est donc très confortable de le taper.
J'ai essayé d'utiliser Ctrl+ cpendant un certain temps, mais j'avais des problèmes dont je ne me souviens pas exactement, mais je n'éprouvais pas exactement le même comportement que Esc, comme je le fais maintenant avec Ctrl+ 3.
la source
Esc
dans la vanille Vim. Je l'ai trouvé empiriquement en testant des combinaisons, je ne connais pas les détails du fonctionnement des composants internes.Si vous avez un clavier anglais américain, appuyer sur Ctrl- [équivaut à appuyer sur Esc. Cela fournit un moyen facile de quitter le mode insertion. Vous pouvez également utiliser Ctrl- c.
Si vim est en mode facile (
-y
), vous devez appuyer sur Ctrl- l(Ctrl + L) pour quitter le mode insertion.Il y a aussi Ctrl+ oqui ne mode d'insertion de sortie temporaire juste pour exécuter une commande et revenir en mode insertion (voir:
:help i_CTRL-O
)Ou Ctrl+ r, mais il est seulement pour insérer le contenu du registre ou d' expression, par exemple Ctrl+ r, =5*5(voir:
:help i_CTRL-R
,:help c_CTRL-R
et après stackoverflow ).Lire la suite sur: Évitez la touche d'échappement à vim wikia
la source
Ctrl+r
sert à insérer des registres (y compris l'expression=
reg). Si vous souhaitez exécuter temporairement une commande unique, utilisezCtrl+o
.Je me suis installé
<A-e>
pour l'évasion:Edit: Je viens de trouver
<C-\><C\n>
ce qui vous envoie en mode normal depuis n’importe quel autre mode. Il a également un meilleur comportement global. Les mappages deviennent:la source
Je remappe l'onglet pour sortir. Je pense que, historiquement, c’est là que se trouvait la touche Échap. Je l’ai donc utilisée et je n’ai jamais regardé en arrière. Je n’ai pratiquement jamais besoin de mettre un onglet dans un document, et lorsque je le fais, je n’appuie que sur Maj + Tab. Je n'ai jamais manqué la reliure d'onglet d'origine.
la source