Ce billet est sous licence Art Libre 1.3.

vi est un éditeur de texte disponible sur quasiment tous les systèmes Unix. Fonctionnant en ligne de commande et occupant peu de ressources, il est souvent le seul éditeur disponible sur un serveur ou quand tout est en rade. Savoir ce débrouiller avec est donc indispensable. Wikipédia propose un résumé plutôt complet des commandes mais encore trop long. Je résume ci-dessous le strict minimum pour pouvoir se dépatouiller avec vi.

Les deux modes de vi

vi fonctionnent suivant deux modes qu'on utilise à tour de rôle :

  1. le mode biiiiip ou mode commande. C'est le mode par défaut lorsqu'on lance vi. Il permet de se déplacer dans le texte, de copier ou de supprimer des lignes ou des mots. Attention, la plupart des commandes que l'on tape ne s'affichent pas à l'écran quand on est en mode biiiip/commande.
    Pour revenir au mode biiiip, il faut appuyer sur ESC. Si vous êtes perdu, si vous ne savez plus dans quel mode vous êtes : ESC, ESC, ESC, ... jusqu'à ce que ça fasse biiiip.
    En mode biiiip, il y a un sous-mode où on peut taper des commandes longues qu'on voit en bas de l'écran avec « : ». Là aussi, appuyer sur ESC pour revenir au mode commande/biiiip normal ;
  2. le mode massacre ou mode insertion, c'est le mode dans lequel on modifie le texte. Comme parfois on passe en mode insertion par erreur, on ne modifie pas toujours là où l'on veut (déjà fait ! \o ;-) Généralement, on tape « i » pour passer en mode insertion (i comme Insertion), et ESC pour revenir au mode commande.

Les commandes à connaitre en mode biiiip/commande

Les commandes indispensables à utiliser en mode commande ou biiip sont :

  • « :q! » : pour quitter vi, sans enregistrer les modifications, là maintenant, tout de suite, sans attendre !
    Un peu d'explications : « : » pour passer en mode commande longue, « q » pour Quitter, « ! » pour ne pas enregistrer les modifications (! comme Maintenant !) ;
  • « :q » : pour quitter vi (q comme Qitter). S'il y a des modifications faite au fichier, vi refusera de quitter. Utiliser alors « :q! » pour quitter sans enregistrer ou « @@:w » pour enregistrer les modifications (cf. infra) ;
  • les flèches du curseur : pour se déplacer dans le texte[1] ;
  • « :w » : pour enregistrer le fichier (w comme Write, écrire en Anglais) ;
  • « i » : on passe en mode insertion pour taper du texte avant le curseur. Taper ESC pour revenir au mode commande ;
  • « x » : effacer un caractère sous le curseur (x comme « faire une croix sur un caractère pour l'effacer »).

Les quelques commandes utiles, toujours à utiliser en mode biiiip :

  • « dd » : pour effacer la ligne sous le curseur (d comme Delete, effacer en Anglais). Pour effacer 2 lignes : « 2dd ». 3 lignes : « 3dd ». Je continue ? ;-) En fait, la ligne n'est pas seulement effacée mais aussi coupée, c.-à-d. recopiée dans un presse-papier ;
  • « yy » : copier la ligne sous le curseur (y comme Yank, tirer d'un coup sec en Anglais). Pour copier 42 lignes : « 42yy » ;
  • « p » : pour coller (p comme Paste, coller en Anglais) les lignes copiées (par « yy ») ou coupées (par « dd » ) après la ligne où se trouve le curseur ;
  • « u » : annuler (u comme Undo, annuler en Anglais) la dernière modification.

Voilà, avec ça vous pouvez vous débrouiller avec vi, je l'ai fait pendant des années. Après, deux-trois autres commandes sont utiles pour jouer au kéké mais on peut survivre sans. :-)

Mise à jour : 2009-05-31, licence Art Libre pour ce billet.

Notes

[1] Historiquement, on utilisait les touches « h », « l » (gauche et droite) et « j » et « k » (haut et bas) pour se déplacer, mais ça fait belle lurette que les touches du curseur sont reconnues.