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)
.exrcfichier contenant le profil de vi
vi -rliste les fichiers sauvegardés en swap
vi -r nomdefichierrécupère le fichier ; utile si on éditait le fichier et qu’un plantage est survenu
:set allaffiche toutes les options
:set nu ou :set numberaffiche les numéros de ligne
:set listaffiche les caractères de contrôle d’un fichier

 Lecture, écriture, sortie

 Commandes Description
:wenregistre le fichier
:w nomdefichier1enregistre le fichier dans nomdefichier1
:w >> nomdefichier1enregistre le fichier à la fin de nomdefichier1
:r nomdefichier1ajoute le contenu du fichier à la suite du curseur
:r! lsajoute 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 ZZsauvegarde le fichier et quitte vi

Déplacement

 Commandes Description
hse déplace d’un caractère vers la gauche
lse déplace d’un caractère vers la droite
k ou <Ctrl>pse déplace vers le haut
j ou <Ctrl>nse 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
Gse déplace en fin de fichier
nGse déplace à la ligne n
$se déplace sur le dernier caractère de la ligne
0se déplace sur le 1er caractère de la ligne
wse déplace d’un mot vers la droite (un signe de ponctuation = un mot)
Wse déplace d’un mot vers la droite (ponctuation ignorée)
bse déplace d’un mot vers la gauche (un signe de ponctuation = un mot)
Bse déplace d’un mot vers la gauche (ponctuation ignorée)
ese déplace jusqu’au dernier caractère du mot suivant (un signe de ponctuation = un mot)
Ese déplace jusqu’au dernier caractère du mot suivant (ponctuation ignorée)
Hse déplace en 1ère ligne de l’écran
Mse déplace en ligne au milieu de l’écran
Lse 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
/texterecherche le mot « texte » vers le bas
?texterecherche le mot « texte » vers le haut
ncontinue la recherche dans la même direction
Ncontinue la recherche dans la direction opposée
<Ctrl>fDéfilement d’un écran vers le bas
<Ctrl>dDéfilement d’un demi-écran vers le bas
<Ctrl>bDéfilement d’un écran vers le haut
<Ctrl>uDéfilement d’un demi-écran vers le haut
<Ctrl>gaffiche le numéro de ligne en cours

Suppression de texte

 Commandes Description
xsupprime le caractère en cours
dwsupprime le mot en cours à partir du curseur (tient compte de la ponctuation)
dWsupprime le mot en cours à partir du curseur (ne tient pas compte de la ponctuation)
ddsupprime la ligne en cours
d) ou d$supprime à partir du curseur et jusqu’à la fin de la ligne
d}supprime le paragraphe en cours
dGsupprime la ligne en cours jusqu’à la fin
d^supprime le début de la ligne jusqu’à curseur
uannule la dernière modification
Urestaure la ligne en cours qui vient d’être modifiée

Ajout de texte

 Commandes Description
iajoute le texte avant le curseur
Iajoute le texte avant le 1ère caractère non blanc de la ligne en cours
aajoute le texte après le curseur
Aajoute le texte à la fin de la ligne en cours
oajoute une ligne après la ligne en cours
Oajoute une ligne avant la ligne en cours
<esc>repasse en mode commande

Déplacement de texte

pcolle le dernier texte supprimé après le curseur
Pcolle le dernier texte supprimé avant le curseur
Jjoint la ligne en cours et la ligne suivante