85 votes

Se déplacer au début de la ligne en mode Insertion

Je sais que je peux utiliser l'un ou l'autre :

  1. Home en mode insertion
  2. Esc + i pour quitter le mode insertion et y entrer à nouveau, ce qui permet de revenir au début de la ligne.

Mais ni l'un ni l'autre ne me satisfont. Dans le premier cas, je dois pencher la tête pour frapper Home parce que je ne peux pas le frapper à l'aveuglette. Dans le second cas, mon bras gauche doit quitter la première rangée pour frapper. Esc ce qui est également ennuyeux.

Qu'en pensez-vous ?

5 votes

Vous pouvez utiliser 0 pour vous déplacer au début de la ligne, mais ce n'est pas en mode insertion.

3 votes

Et si vous trouvez que Esc est trop loin, vous pouvez utiliser Ctrl-[ à la place :)

3 votes

Ou mieux, Ctrl-C fonctionne comme Esc. Ou mieux encore, faire correspondre Caps Lock à Esc.

158voto

Greg Sexton Points 4621

Ctrl + O en mode insertion permet de passer en mode commande pour une seule pression de touche. C'est pourquoi Ctrl + O puis Shift + I devrait permettre de réaliser ce que vous recherchez.

0 votes

Vous pouvez faire la même chose en appuyant sur Ctrl+c, I ou Ctrl+[, I. Ctrl+c est fonctionnellement similaire à ESC et Ctrl+[ est équivalent à ESC.

44 votes

Ou Ctrl-o suivi de 0 (légèrement plus efficace que le Ctrl-o suivi de Shift-I ), car vous reviendrez automatiquement en mode d'insertion. Dans certains cas, Ctrl-o suivi de ^ pourrait être préférable (pour passer au premier caractère de la ligne qui n'est pas un espace blanc).

2 votes

Vous pouvez utiliser Alt-A ou Alt-I en mode insertion si votre touche alt envoie escape (peut être configuré dans iTerm2)

59voto

Xavier T. Points 14049

Vous pouvez entrer dans le mode d'insertion en utilisant I (capital i).

Cela placera le curseur au début de la ligne.

De même, vous pouvez utiliser A pour ajouter quelque chose à la fin de la ligne.

Cependant, cela ne résout pas vraiment le problème de se déplacer alors que l'on est déjà en mode insertion.

Je viens de consulter l'aide sur le mode Insertion, il n'y a pas de combinaison de touches en mode Insertion pour se déplacer en début de ligne.

Autre idée : Remapper une nouvelle commande uniquement en mode insertion

inoremap <C-i> <Home>

25voto

Jonathan Cutrell Points 131

Les touches Ctrl+a et Ctrl+e sont respectivement affectées au début et à la fin de la ligne. Cela correspond au comportement de la plupart des lignes de commande bash. Cela fonctionne bien pour moi.

inoremap <C-e> <Esc>A
inoremap <C-a> <Esc>I

0 votes

Si je ne me trompe pas, ce sont les raccourcis clavier de la plupart des autres éditeurs. Je vais les ajouter à mon fichier vimrc.

2 votes

Il s'agit de comportements habituels d'Emacs. La plupart des navigateurs les prennent également en charge dans divers types de champs de texte. Je ne pense pas que ce soit une mauvaise idée, mais voici ce qui vous manque : <C-e> copie/écrit le caractère situé sous le curseur ( <C-y> pour plus de curseur), <C-a> est tout ce qui se trouve dans votre registre .- (point-register). Ce registre est rempli avec ce que vous venez de taper, lorsque vous quittez le mode insertion (même en utilisant Ctrl-c (ce à quoi vous ne devriez pas vous habituer pour de nombreuses raisons)).

0 votes

@Jonathan Cutrell Comment aller au début d'une nouvelle ligne.

3voto

CommanderHK Points 79

Si vous utilisez MacOS Terminal, allez dans Préférences...>Paramètres>Clavier et affectez la touche de fin à Ctrl-O$ (elle est affichée sous la forme de \017 ) et utiliser ensuite fn+gauche pour simuler la touche de fin. Faites de même pour la touche Home. Séquence d'échappement \033 [H signifie également "maison".

2 votes

Fn-Gauche et fn-Droit fonctionnaient par défaut pour moi dans vim sur mac terminal

1voto

tskulbru Points 502

La meilleure solution consiste à réaffecter l'action à une autre touche (voir Comment remapper <Ctrl-Home> pour aller à la première ligne d'un fichier ? pour des idées)

Je réfléchirais à la fréquence à laquelle j'utilise cette "fonction" et je l'associerais à une touche en conséquence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X