L’éditeur de texte VI

Ce chapitre est un incontournable de la maîtrise d’un système Linux. Dans 99,99 % des cas, l’éditeur VI est présent sur votre système. Pourquoi s’en passer ?

1. Le programme vi

vi est un éditeur de texte en mode texte plein écran écrit par Bill Joy en 1976 sur une des premières versions de la distribution Unix BSD.

vi ou l’un de ses clones peut être trouvé dans presque toutes les installations de Unix. La Single UNIX Specification (plus particulièrement l’« IEEE standard 1003.2, Part 2: Shell and utilities ») inclut vi. Ainsi, tout système se conformant à cette spécification intègre vi.

Les utilisateurs, débutants avec vi, sont souvent confrontés à des difficultés, d’une part à cause des raccourcis utilisés pour chacune des commandes, ensuite parce que l’effet de ces raccourcis change selon le mode dans lequel se trouve vi.

On installe vi Improved (vim) :

sudo yum install vim || sudo apt-get install vim

On pourra changer l’éditeur par défaut sous Debian/Ubuntu avec la commande :

sudo update-alternatives --config editor

2. Commandes vi

La plupart des commandes de vi sont choisies de façon à :

  • limiter la frappe nécessaire. Les modificateurs tels que Ctrl, Maj ou Alt sont utilisés avec la plus grande parcimonie ;
  • limiter les mouvements des doigts et des mains sur le clavier. Par exemple, en mode commande, les touches h, j, k et l permettent de déplacer le curseur. Comme il s’agit d’une des fonctions les plus importantes, les touches qui lui sont affectées sont celles que l’utilisateur a immédiatement sous les doigts ;
  • faciliter les moyens mnémotechniques pour retenir leur(s) effet(s). Il faut toutefois garder à l’esprit que vi a été écrit par des programmeurs anglophones. Par exemple, en mode commande, d permet d’effacer (delete), i passe en mode insertion, w avance le curseur d’un mot (word). En combinant une commande d’édition (par exemple effacer : d) et une commande de mouvement (par exemple avancer d’un mot : w), on obtient la séquence dw, qui permet d’effacer un mot. D’une manière similaire, la commande d3w efface trois mots.

3. Lancer vi

vi nomdefichier
vi --help

4. Modes vi

On trouve plusieurs modes :

  • mode normal commande :
    • Mouvements (déplacement) et quantificateurs
    • effacement, copier/couper/coller,
    • rechercher
  • mode insertion
    • qui permet d’ajouter/insérer des caractères
  • mode ligne de commande :
    • quitter, enregistrer, Fermer
    • Remplacer
    • Exécuter une commande externe

5. Guide vi

5.1. Avant toutes choses

  • :10 : déplace le curseur à la ligne 10
  • :set nu : affiche les numéros de ligne
  • :set nonu : désactive l’affichage des numéros de ligne
  • ESC pour revenir au mode commande

5.2. Mouvements

On appelle les déplacements du curseur dans le fichier des “mouvements”.

  • 0 : le curseur revient au début de la ligne
  • $ : le curseur va à la fin de la ligne
  • w : le curseur va au début du mot suivant
  • e : le curseur va à la fin du mot courant
  • b : le curseur va au début du mot précedent
  • gg : Aller au début du document
  • G : Aller au début de la dernière ligne du document
  • G$ : Aller à la fin de la dernière ligne du document

5.3. Quantificateur

  • 2w : aller à 2 mots à partir du curseur

5.4. Effacer/Couper

  • x : efface le caractère sous le curseur

Avec mouvement :

  • dw : efface le mot sous le curseur
  • d$ : efface jusqu’à la fin de la ligne à partir du curseur
  • de : efface jusqu’à la fin du mot à partir du curseur
  • dd : efface la ligne du curseur

Avec quantificateur :

  • d2w : efface les deux mots à partir du curseur
  • 2dd : efface les deux lignes à partir du curseur

5.5. Annuler

  • u : annule la dernière commande.
  • U : annule tous les changements sur une ligne
  • CTRL-R : annule l’annulation.

5.6. Copier/Coller

  • yy : copie la ligne
  • y$ : copie jusqu’à la fin de ligne
  • Y : copie dans le tampon la ligne du curseur
  • p : colle à l’endroit du curseur
  • r : remplace le caractère sous le curseur
  • v0$y : copie la ligne en mode visuel

5.7. Rechercher

  • / : recherche une occurrence
  • %

5.8. Mode insertion

Ce mode est invoqué par une des commandes :

  • i : insère des caractères après le curseur
  • A : ajoute des caractères à la fin d’une ligne où que soit positionné le curseur
  • o : insère une ligne après le curseur
  • O : insère une ligne avant le curseur
  • a : insère après le curseur

5.9. Fichier

  • :q! : quitte sans enregistrer
  • :x : quitte en enregistrant
  • :w : enregistre le fichier
  • :w nomdefichier : enregistre sous un nom

5.10. Remplacer

  • :s/aa/bb : remplace sur une ligne
  • :s/aa/bb/g : remplace toute occurence sur une ligne
  • :25,30s/aa/bb/g : remplace du texte de la ligne 25 à 30
  • :%s/aa/bb/g : remplace toutes les occurrences dans le fichier
  • :%s/aa/bb/gc : remplace toutes les occurrences dans le fichier avec confirmation

5.11. Divers

  • :set number : affiche les numéros de ligne
  • :! cmd : exécute la commande “cmd”
  • :r! cmd : insère le résultat de la commande “cmd”

6. vi par la pratique

Aide-mémoire VI

Source de l’image

Source : https://www.epons.org/vi.php

vimtutor (installé par défaut avec vim) vous permet d’apprendre vi par la pratique en 7 leçons :

  1. Déplacer le curseur, sortir de vim, effacer, insérer et ajouter du texte, éditer un fichier.
  2. Commandes d’effacement, opérateur et mouvement, quantificateur et effacement, opération sur les lignes, annulation.
  3. Collage, remplacement, opérateur de changement.
  4. Position du curseur et état du fichier, recherche, substitution
  5. Enregistrement de fichiers, d’extraits de fichiers, récupération et fusion de fichiers.
  6. Ouverture, ajout, remplacement, copier/coller
  7. Aide, script de démarrage et complétion

L’auteur vous conseille vivement de lancer régulièrement cet exercice et d’apprendre par la pratique !

7. Pour aller plus loin avec vi