3. L'éditeur de texte VI

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) :

# yum install vim || 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 : Se déplacer à la ligne 10.

  • :set nu : Afficher les numéros de ligne.

  • :set nonu : Désactiver 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 : Revenir au début de la ligne

  • $ : Aller à la fin de la ligne

  • w : Aller au début du mot suivant

  • e : Aller à la fin du mot courant

  • 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 : Annuler la dernière commande.

  • U : Annuler tous les changements sur une ligne.

  • CTRL-R : Annuler l'annulation.

5.6. Copier/Coller

  • yy : copie la ligne

  • y$ : copie jusqu'à la fin de ligne`

  • Y

  • p : Coller à l'endroit du curseur.

  • r : Remplace le caractère sous le curseur

  • v0$y : Copier la ligne en mode visuel

5.7. Rechercher

  • / : Rechercher 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! : Quitter sans enregistrer.

  • :x : Quitter en enregistrant.

  • :w : Enregistrer.

  • :w nomdefichier : Enregistrer sous un nom.

5.10. Remplacer

  • :s/aa/bb : Remplacer sur une ligne.

  • :s/aa/bb/g : Tout remplacer sur une ligne.

  • :25,30s/aa/bb/g : Remplacer du texte de la ligne 25 à 30.

  • :%s/aa/bb/g : Remplacer toutes les occurrences dans le fichier.

  • :%s/aa/bb/gc : Remplacer 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

Source : http://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

Commentaires