Modes et grammaire

Paliers0 et 2 Les modes se retiennent en une heure. La grammaire de la seconde moitié de cette page est ce qu’on met plusieurs semaines à intégrer, et c’est tout l’intérêt de l’éditeur.

Les modes

Une même touche ne fait pas la même chose selon le mode : d supprime en mode normal et écrit un « d » en mode insertion. C’est ce qui déroute au début, et ce qui libère le clavier entier pour des commandes ensuite.

ModeRôle
NormalMode par défaut : on se déplace et on lance des opérations.
InsertionOn écrit du texte.
VisuelOn sélectionne du texte avant de lui appliquer une opération.
RemplacementOn écrase le texte existant au fil de la frappe.
CommandeOn saisit une commande Ex — :w, :s/…, :help.
TerminalOn interagit avec un shell ouvert dans un buffer (:terminal).

Échap — ou Ctrl + [, plus accessible — ramène toujours au mode normal.

Entrer en mode insertion

  • i : avant le curseur
  • a : après le curseur
  • I : au premier caractère non-blanc de la ligne
  • A : à la fin de la ligne
  • o : sur une nouvelle ligne en dessous
  • O : sur une nouvelle ligne au-dessus
  • s : après avoir supprimé le caractère sous le curseur
  • S : après avoir vidé la ligne
  • C : après avoir supprimé jusqu’à la fin de la ligne
  • gi : là où l’on avait quitté le mode insertion la dernière fois

A et o sont de loin les plus utilisés — on écrit presque toujours en fin de ligne ou sur une ligne neuve. Prendre l’habitude de A plutôt que $ puis a fait gagner une frappe des dizaines de fois par jour.

Entrer en mode visuel

  • v : sélection caractère par caractère
  • V : sélection par lignes entières
  • Ctrl + v : sélection par blocs, rectangulaire
  • gv : ré-sélectionner la dernière sélection

Entrer en mode remplacement

  • r{char} : remplace le seul caractère sous le curseur et reste en mode normal
  • R : écrase le texte jusqu’à Échap

La grammaire

Ce qui fait la puissance de l’éditeur, ce n’est pas la liste des raccourcis mais le fait qu’ils se combinent. Une commande d’édition suit toujours la même forme :

{opérateur}{compteur}{motion}

Le compteur peut aussi se placer en tête : 2dw et d2w sont équivalents.

  • l’opérateur dit ce que l’on fait — supprimer, changer, copier, indenter
  • le compteur dit combien de fois
  • la motion dit sur quelle portion de texte

d2w se lit donc delete 2 words.

Les opérateurs

OpérateurAction
dsupprimer (delete)
cchanger (change) — supprime puis passe en insertion
ycopier (yank)
> / <indenter / désindenter
=ré-indenter
gu / gUpasser en minuscules / majuscules
g~inverser la casse
gqreformater le texte sur la largeur de textwidth
!filtrer par une commande externe

Doubler l’opérateur l’applique à la ligne courante : dd supprime la ligne, yy la copie, >> l’indente.

Le mode visuel inverse l’ordre

En mode normal on annonce l’opération puis sa cible (d2w) ; en mode visuel on sélectionne d’abord et on applique l’opérateur ensuite (vjjd). Le second est plus rassurant parce qu’on voit ce qu’on s’apprête à modifier — mais il n’est pas répétable avec ., ce qui finit par compter. Voir Automatisation.

La troisième pièce de la grammaire, ce sont les objets texte : au lieu d’une motion, on désigne une structure — un mot, l’intérieur de parenthèses, une fonction. C’est l’objet de la page Édition.

Dans ma config

<leader> est espace, en global comme en local. Le mode terminal se quitte avec <Esc><Esc> plutôt que l’imprononçable <C-\><C-n> d’origine.