Guide pratique de VI (Unix / Linux)

Introduction

La présente documentation technique a pour objectif de préciser les commandes sous les systèmes d’exploitation Unix / Linux avec l’éditeur vi.

L'éditeur vi

Présentation de l'éditeur vi

vi est un éditeur de texte page. Pour fonctionner correctement, il lui faut connaître le type de terminal courant.

TERM est le nom de la variable d’environnement contenant le type de terminal :
En Bourne Shell :

Pour consulter la variable $TERM :

% echo $TERM

Pour modifier la variable $TERM :

% TERM=vt220
% export TERM

Pour appeler l’éditeur vi :

% vi <Nom_du_fichier>

Les deux modes de fonctionnement de l’éditeur vi

L’éditeur vi possède deux modes de fonctionnement :

  • le mode insertion : tout ce qui est entré au clavier est écrit dans le tampon en mémoire associé au fichier
  • le mode commande : tout ce qui est entré au clavier est interprété comme commande de l’éditeur

Pour passer d’un mode à l’autre :

  • Touche i : mode commande => mode insertion
  • Touche Esc : mode insertion => mode commande

Les commandes vi

L’éditeur vi dispose d’un certain nombre de variables d’état permettant de modifier son comportement. Il existe des variables booléennes et d’autres susceptibles de prendre différentes valeurs.

Les commandes de l’éditeur vi sont données dans le tableau qui suit.

Commandes générales
:set all Visualiser l'ensemble des variables d'état de l'éditeur
:set list Afficher les fins de lignes et les caractères de contrôle
:set nu Afficher les numéros de ligne
:set redraw Rafraîchir l'écran
:f Référence du fichier en cours d’édition,
numéro de ligne courante,…
ZZ Quitter vi et sauvegarder le fichier sous le nom courant
:w <ref> Sauvegarder un fichier <ref> sans quitter vi
:wq Sauvegarder le fichier courant et quitter vi
:q ! Quitter vi sans sauvegarder le fichier courant
:e <ref> Charger un nouveau fichier
:r <ref> Lire et insérer un fichier après la ligne courante
:!<Commande Shell> Lancer une commande shell depuis l'éditeur
:n,m w <ref> Sauver les lignes n à m du fichier courant dans un fichier
:n,m w <ref> Sauver les lignes n à m du fichier courant dans un fichier
Déplacements du curseur Déplacement page à page
Touche h Déplacement à gauche <CTRL> + f Une page en avant
Touche l Déplacement à droite <CTRL> + b Une page en arrière
Touche k Déplacement en haut <CTRL> + d Une demi page en avant
Touche j Déplacement en bas <CTRL> + u Une demi page en arrière
(Flèches du clavier disponibles selon la plateforme)
Déplacement sur l’écran Déplacement sur la ligne
H Home, haut de l’écran w Mot suivant
M Middle, milieu de l’écran b Mot précédent
L Last, dernière ligne de l’écran e Fin du mot
G Goto, dernière ligne du fichier 0 Début de ligne
nG Goto n ième ligne du fichier
Mode insertion Recherche des chaînes de caractères
i Insérer avant le curseur /chaine Recherche en avant de chaine
a Insérer après le curseur n Occurrence suivante de chaine
A Insérer en fin de ligne N Occurrence précédente de chaine
r Remplacer le caractère courant
o Ajouter une ligne sous le curseur
O Ajouter une ligne au dessus
du curseur

cw Changer un mot Remplacement global
u Annuler la dernière commande :1,$s/o1/n2/g Remplacement de la ligne 1 à la fin du fichier ($) de 'o1' par 'n2'
Copie de texte Effacer
Y Copier une ligne vers le buffer x Effacer un caractère
nY Copier n lignes dw Effacer un mot
p Placer le contenu du buffer sur la ligne suivante dd Effacer une ligne
P
ndd Effacer n lignes
:g/char/d Effacer les lignes contenant ‘char’