vi: Petit guide de survie Vincent Defert - 28 Nov. 1998

Quoi qu'on puisse en penser à notre époque d'interfaces graphiques, vi est un petit éditeur très pratique pour modifier des fichiers ASCII et il offre 2 gros avantages: on est sûr de le trouver partout et il fonctionne même dans une fenêtre telnet sous MS-Windows. Par contre, il est vrai que s'il était révolutionnaire à l'époque des téléscripteurs, on sent bien que beaucoup d'eau a coulé sous les ponts depuis... d'où la nécessité de ce petit guide!

Première surprise: vi fonctionne dans 3 modes différents, le mode commande, le mode insertion et le mode sélection. Comme son nom l'indique, le mode insertion correspond au mode dans lequel on tape le texte à saisir. Le mode commande permet de se déplacer, de faire des recherches et eventuellement remplacements, de supprimer du texte et de passer dans les autres modes. Le mode sélection permet de sélectionner du texte librement, ligne par ligne ou sous forme de zone rectangulaire, et de le placer dans le presse-papiers ("couper" et "copier").

Attention: vi fait la différence entre minuscules et majuscules! Ainsi, p et P sont des commandes différentes. D'autre part, un peut donner un facteur de répétition à quasiment toutes les commandes en tapant ce nombre avant la commande (ex. 20k remonte de 20 lignes): il faut donc faire attention à ce qu'on fait dès qu'on s'approche du pavé numérique!

CommandeDescription
0Aller en début de ligne
$Aller en fin de ligne
kLigne précédente
jLigne suivante
hCaractère précédent
lCaractère suivant
bMot précédent
wMot suivant
Ctrl-BPage précédente
Ctrl-FPage suivante
nGAller à la ligne n. Exemple: 1G va sur la première ligne
GAller à la dernière ligne
xSupprime le caractère sous le curseur
ddSupprime la ligne courante et la copie dans le presse-papiers
ndIdem avec n lignes
JFusionne la ligne courante et la suivante
yyCopie la ligne courante dans le presse-papiers
nyIdem avec n lignes
PColle le presse-papiers avant la position courante
pColle le presse-papiers après la position courante
vCommence une sélection en mode caractères
VCommence une sélection en mode lignes
Ctrl-VCommence une sélection en mode "rectangulaire"
dSupprime la sélection et la copie dans le presse-papiers
yCopie la sélection dans le presse-papiers
cSupprime la sélection et passe en mode insertion
iPasse en mode insertion avant la position courante
aPasse en mode insertion après la position courante
oPasse en mode insertion sur une nouvelle ligne sous la ligne courante
EscQuitte le mode insertion
uAnnule la dernière commande
rRemplace le caractère sous le curseur par le prochain caractère tapé
~Convertit le caractère sous le curseur en majuscule si c'est une minuscule et vice-versa
/texteRecherche en avant du texte indiqué
?texteRecherche en arrière du texte indiqué
nRecherche l'occurrence suivante
NRecherche l'occurrence précédente
:%s/chercher/remplacerRecherche avec remplacement dans tout le fichier
:wSauvegarde le fichier courant
:wfichierEcrit le document dans le fichier indiqué
:rfichierInclut le fichier indiqué à partir de la position courante
:q!Quitter en annulant les modifications
ZZ (ou :wq)Quitter en enregistrant les modifications

Il est possible de faire bien d'autres choses avec vi: il est presque aussi puissant que Brief, bien que sûrement moins ergonomique. Les commandes décrites ici correspondent simplement aux besoins quotidiens, la mémorisation du reste relevant à mon avis du masochisme.

Un détail intéressant: quand on est installé au clavier de la machine Linux elle-même, on peut utiliser librement les flèches pour se déplacer, qu'on soit en mode commande ou en mode insertion. Quand on utilise le telnet de MS-Windows, on est obligé de se servir des touches alphanumériques, et seulement en mode commande bien sûr.

Pour finir, vous trouverez un autre guide sur vi bien plus complet ici, à lire quand vous aurez joué un petit peu avec vi et que vous voudrez en savoir plus ou mieux le comprendre.