L’éditeur vi

Vi est l'éditeur de texte standard sous Unix, il est essentiel d'en connaître les rudiments. Il possède plusieurs modes de fonctionnement, le mode insertion qui permet d'ajouter du texte et le mode commande qui permet d'interagir avec le document. Pour passer en mode commande, il faut utiliser la commande "Echap". Pour passer en mode insertion, il faut utiliser une commande d'ajout de texte (cf ci-dessous). Voici un descriptif étendu des commandes de vi.    

Entrée dans vi

 Commandes  Description
vi nomdefichier édite le fichier indiqué
vi nomdefichier1 nomdefichier2 édite consécutivement les fichiers 1 & 2 (via :n)
.exrc fichier contenant le profil de vi
vi -r liste les fichiers sauvegardés en swap
vi -r nomdefichier récupère le fichier ; utile si on éditait le fichier et qu'un plantage est survenu
:set all affiche toutes les options
:set nu ou :set number affiche les numéros de ligne
:set list affiche les caractères de contrôle d'un fichier

 Lecture, écriture, sortie

 Commandes  Description
:w enregistre le fichier
:w nomdefichier1 enregistre le fichier dans nomdefichier1
:w >> nomdefichier1 enregistre le fichier à la fin de nomdefichier1
:r nomdefichier1 ajoute le contenu du fichier à la suite du curseur
:r! ls ajoute le résultat de la commande shell "ls" à la suite du curseur
. répète la dernière commande
:! quitte la commande shell (commande de filtrage)
:wq ou ZZ sauvegarde le fichier et quitte vi

Déplacement

 Commandes  Description
h se déplace d'un caractère vers la gauche
l se déplace d'un caractère vers la droite
k ou <Ctrl>p se déplace vers le haut
j ou <Ctrl>n se déplace vers le bas
^ se déplace sur le 1er caractère non blanc de la ligne courante
$ se déplace en fin de ligne courante
<CR> ou + se déplace en début de ligne suivante
- se déplace en début de ligne précédente
G se déplace en fin de fichier
nG se déplace à la ligne n
$ se déplace sur le dernier caractère de la ligne
0 se déplace sur le 1er caractère de la ligne
w se déplace d'un mot vers la droite (un signe de ponctuation = un mot)
W se déplace d'un mot vers la droite (ponctuation ignorée)
b se déplace d'un mot vers la gauche (un signe de ponctuation = un mot)
B se déplace d'un mot vers la gauche (ponctuation ignorée)
e se déplace jusqu'au dernier caractère du mot suivant (un signe de ponctuation = un mot)
E se déplace jusqu'au dernier caractère du mot suivant (ponctuation ignorée)
H se déplace en 1ère ligne de l'écran
M se déplace en ligne au milieu de l'écran
L se déplace en dernière ligne de l'écran
( se déplace en début de la phrase en cours
) se déplace en début de phrase suivante
{ se déplace en début de paragraphe en cours
} se déplace  en début de paragraphe suivant

Recherche de texte

 Commandes  Description
/texte recherche le mot "texte" vers le bas
?texte recherche le mot "texte" vers le haut
n continue la recherche dans la même direction
N continue la recherche dans la direction opposée
<Ctrl>f Défilement d'un écran vers le bas
<Ctrl>d Défilement d'un demi-écran vers le bas
<Ctrl>b Défilement d'un écran vers le haut
<Ctrl>u Défilement d'un demi-écran vers le haut
<Ctrl>g affiche le numéro de ligne en cours

Suppression de texte

 Commandes  Description
x supprime le caractère en cours
dw supprime le mot en cours à partir du curseur (tient compte de la ponctuation)
dW supprime le mot en cours à partir du curseur (ne tient pas compte de la ponctuation)
dd supprime la ligne en cours
d) ou d$ supprime à partir du curseur et jusqu'à la fin de la ligne
d} supprime le paragraphe en cours
dG supprime la ligne en cours jusqu'à la fin
d^ supprime le début de la ligne jusqu'à curseur
u annule la dernière modification
U restaure la ligne en cours qui vient d'être modifiée

Ajout de texte

 Commandes  Description
i ajoute le texte avant le curseur
I ajoute le texte avant le 1ère caractère non blanc de la ligne en cours
a ajoute le texte après le curseur
A ajoute le texte à la fin de la ligne en cours
o ajoute une ligne après la ligne en cours
O ajoute une ligne avant la ligne en cours
<esc> repasse en mode commande

Déplacement de texte

p colle le dernier texte supprimé après le curseur
P colle le dernier texte supprimé avant le curseur
J joint la ligne en cours et la ligne suivante