Dernière mise-à-jour : 2020/01/30 03:28

SO103 - L’Éditeur VI

Présentation

VI est un éditeur de texte puissant qui dispose de deux modes :

  • Commande
  • Insertion

En mode commande, la plupart des commandes VI sont précédées par la touche :.

En mode insertion, il est possible :

  • d'éditer le texte,
  • ajouter du texte,
  • rechercher du texte,
  • copier du texte,
  • coller du texte,
  • couper du texte,
  • remplacer du texte.

Lancer et Quitter VI

Commande Description
vi nomFichier Ouverture ou création d'un fichier
vi Ouverture d'un nouveau fichier
vi -r nomFichier Récupération d'un fichier après une panne
view nomFichier Ouverture d'un fichier en mode lecture seule
:wq Quitter en sauvegardant et en modifiant la date de modification
:x Quitter en sauvegardant sans modifier la date de modification en cas de non-modification du fichier
:q Quitter en cas de non-modification du fichier ou suite à l'utilisation de la commande view

Téléchargez le fichier vitexte en cliquant sur le titre du fichier exemple ci-dessous :

vitexte
Celle-ci est la ligne 1
Celle-ci est la ligne 2
Celle-ci est la ligne 3
Celle-ci est la ligne 4
Celle-ci est la ligne 5
Celle-ci est la ligne 6
Celle-ci est la ligne 7
Celle-ci est la ligne 8
Celle-ci est la ligne 9
Celle-ci est la ligne 10
Celle-ci est la ligne 11
Celle-ci est la ligne 12
Celle-ci est la ligne 13
Celle-ci est la ligne 14
Celle-ci est la ligne 15
Celle-ci est la ligne 16
Celle-ci est la ligne 17
Celle-ci est la ligne 18
Celle-ci est la ligne 19
Celle-ci est la ligne 20
Celle-ci est la ligne 21
Celle-ci est la ligne 22
Celle-ci est la ligne 23
Celle-ci est la ligne 24
Celle-ci est la ligne 25

Ouvrez maintenant le fichier /vitexte en lecture seule :

# view /vitexte

Vous obtiendrez un résultat similaire à celui-ci :

"/vitexte" [Lecture seule] 25 lignes, 616 caractères
Celle-ci est la ligne 1
Celle-ci est la ligne 2
Celle-ci est la ligne 3
Celle-ci est la ligne 4
Celle-ci est la ligne 5
Celle-ci est la ligne 6
Celle-ci est la ligne 7
Celle-ci est la ligne 8
Celle-ci est la ligne 9
Celle-ci est la ligne 10
Celle-ci est la ligne 11
Celle-ci est la ligne 12
Celle-ci est la ligne 13
Celle-ci est la ligne 14
Celle-ci est la ligne 15
Celle-ci est la ligne 16
Celle-ci est la ligne 17
Celle-ci est la ligne 18
Celle-ci est la ligne 19
Celle-ci est la ligne 20
Celle-ci est la ligne 21
Celle-ci est la ligne 22
Celle-ci est la ligne 23
Celle-ci est la ligne 24
"/vitexte" [Lecture seule] 25 lignes, 616 caractères

<note warning> Assurez-vous que vous puissiez voir les 25 lignes de ce fichier. </note>

<note important> Notez la présence de la dernière ligne avec la mention [Lecture seule]. </note>

Quittez view avec la commande :q et ouvrez le fichier /vitexte en mode lecture-écriture :

# vi /vitexte

Vous obtiendrez un résultat similaire à celui-ci :

# vi /vitexte
"/vitexte" 25 lignes, 616 caractères
Celle-ci est la ligne 1
Celle-ci est la ligne 2
Celle-ci est la ligne 3
Celle-ci est la ligne 4
Celle-ci est la ligne 5
Celle-ci est la ligne 6
Celle-ci est la ligne 7
Celle-ci est la ligne 8
Celle-ci est la ligne 9
Celle-ci est la ligne 10
Celle-ci est la ligne 11
Celle-ci est la ligne 12
Celle-ci est la ligne 13
Celle-ci est la ligne 14
Celle-ci est la ligne 15
Celle-ci est la ligne 16
Celle-ci est la ligne 17
Celle-ci est la ligne 18
Celle-ci est la ligne 19
Celle-ci est la ligne 20
Celle-ci est la ligne 21
Celle-ci est la ligne 22
Celle-ci est la ligne 23
Celle-ci est la ligne 24
"/vitexte" 25 lignes, 616 caractères

<note important> Notez que vi est lancé en mode Commande. </note>

En cas de problème

En cas de problèmes rencontrés pendant cette leçon (insertion de mauvais caractères, suppression erronée etc), utilisez une des commandes suivantes :

Touche(s) Description
u Annulation de la dernière commande
U Annulation des modifications apportées à la ligne en cours
:q! Quitter sans sauvegarder

Set

Commande Description
:set nu Visualisation de la numérotation des lignes
:set number Visualisation de la numérotation des lignes
:set nonu Suppression de la numérotation des lignes
:set nonumber Suppression de la numérotation des lignes
:set ic Rechercher sans tenir compte de la casse
:set noic Rechercher en tenant compte de la casse

Activer la numérotation des lignes avec la commande :set nu. Vous obtiendrez un résultat similaire à celui-ci :

     1  Celle-ci est la ligne 1
     2  Celle-ci est la ligne 2
     3  Celle-ci est la ligne 3
     4  Celle-ci est la ligne 4
     5  Celle-ci est la ligne 5
     6  Celle-ci est la ligne 6
     7  Celle-ci est la ligne 7
     8  Celle-ci est la ligne 8
     9  Celle-ci est la ligne 9
    10  Celle-ci est la ligne 10
    11  Celle-ci est la ligne 11
    12  Celle-ci est la ligne 12
    13  Celle-ci est la ligne 13
    14  Celle-ci est la ligne 14
    15  Celle-ci est la ligne 15
    16  Celle-ci est la ligne 16
    17  Celle-ci est la ligne 17
    18  Celle-ci est la ligne 18
    19  Celle-ci est la ligne 19
    20  Celle-ci est la ligne 20
    21  Celle-ci est la ligne 21
    22  Celle-ci est la ligne 22
    23  Celle-ci est la ligne 23
    24  Celle-ci est la ligne 24
    25  Celle-ci est la ligne 25
:set nu

Commandes du Curseur

Commande Description
h ou ou Backspace Déplacement du curseur un caractère vers la gauche
j ou ou ↵ Entrée Déplacement du curseur une ligne vers le bas
k ou Déplacement du curseur une ligne vers le haut
l ou ou Barre d'espacement Déplacement du curseur un caractère vers la droite
b Déplacement du curseur un mot vers la gauche
w Déplacement du curseur un mot vers la droite
e Déplacement du curseur vers la fin du mot en cours
H Déplacement du curseur en haut de l'écran
M Déplacement du curseur au milieu de l'écran
L Déplacement du curseur en bas de l'écran
G ou :$ Déplacement du curseur vers la dernière ligne du fichier
1G ou :0 Déplacement du curseur vers la première ligne du fichier
27G Déplacement du curseur vers la ligne 27
Ctrl+f Défilement d'une page-écran vers l'avant
Ctrl+d Défilement d'une demi-écran vers l'avant
Ctrl+b Défilement d'une page-écran vers l'arrière
Ctrl+u Défilement d'une demi-écran vers l'arrière

<note> Testez chaque commande afin de visualiser les résultats. Revenez ensuite à la première page-écran et positionnez votre curseur au début de la ligne 13. </note>

<note important> Pour savoir pourquoi les touches H, J, K et L sont utilisés comme un pavé directionnel, consultez cette page. </note>

Insertion de Texte

Touche(s) Description
i Insertion du texte avant le curseur
I Insertion du texte en début de ligne
a Insertion du texte après le curseur
A Insertion du texte en fin de ligne
o Insertion d'une ligne après la ligne courante
O Insertion d'une ligne avant la ligne courante
Echap Passage du mode Insertion en mode Commande

Insérez une ligne en dessous de la ligne courante en utilisant le commande o. Notez que vous êtes maintenant en mode Insertion. Tapez ensuite Unix est super. Vous obtiendrez un résultat similaire à celui-ci :

     1  Celle-ci est la ligne 1
     2  Celle-ci est la ligne 2
     3  Celle-ci est la ligne 3
     4  Celle-ci est la ligne 4
     5  Celle-ci est la ligne 5
     6  Celle-ci est la ligne 6
     7  Celle-ci est la ligne 7
     8  Celle-ci est la ligne 8
     9  Celle-ci est la ligne 9
    10  Celle-ci est la ligne 10
    11  Celle-ci est la ligne 11
    12  Celle-ci est la ligne 12
    13  Celle-ci est la ligne 13
    14  Unix est super
    15  Celle-ci est la ligne 14
    16  Celle-ci est la ligne 15
    17  Celle-ci est la ligne 16
    18  Celle-ci est la ligne 17
    19  Celle-ci est la ligne 18
    20  Celle-ci est la ligne 19
    21  Celle-ci est la ligne 20
    22  Celle-ci est la ligne 21
    23  Celle-ci est la ligne 22
    24  Celle-ci est la ligne 23
    25  Celle-ci est la ligne 24

<note warning> Ne changez pas la taille de votre terminal. Vous ne devez visualiser QUE les premières 25 lignes. </note>

Passez maintenant en mode Commande en appuyant sur la touche Echap puis placez-vous sur la dernière ligne de l'écran en utilisant le commande L. Positionnez-vous à la fin de la ligne en mode Insertion en utilisant la commande A et saisissez de nouveau la phrase Unix est super. Vous obtiendrez un résultat similaire à celui-ci :

     1  Celle-ci est la ligne 1
     2  Celle-ci est la ligne 2
     3  Celle-ci est la ligne 3
     4  Celle-ci est la ligne 4
     5  Celle-ci est la ligne 5
     6  Celle-ci est la ligne 6
     7  Celle-ci est la ligne 7
     8  Celle-ci est la ligne 8
     9  Celle-ci est la ligne 9
    10  Celle-ci est la ligne 10
    11  Celle-ci est la ligne 11
    12  Celle-ci est la ligne 12
    13  Celle-ci est la ligne 13
    14  Unix est super
    15  Celle-ci est la ligne 14
    16  Celle-ci est la ligne 15
    17  Celle-ci est la ligne 16
    18  Celle-ci est la ligne 17
    19  Celle-ci est la ligne 18
    20  Celle-ci est la ligne 19
    21  Celle-ci est la ligne 20
    22  Celle-ci est la ligne 21
    23  Celle-ci est la ligne 22
    24  Celle-ci est la ligne 23
    25  Celle-ci est la ligne 24Unix est super

Passez maintenant en mode Commande en appuyant sur la touche Echap puis placez-vous au début de la première ligne de l'écran en utilisant le commande H. Positionnez-vous au cinquième mot en utilisant la commande w cinq fois. Passez en mode Insertion en utilisant la commande i puis saisissez de nouveau la phrase Unix est super. Vous obtiendrez un résultat similaire à celui-ci :

     1  Celle-ci est la Unix est superligne 1
     2  Celle-ci est la ligne 2
     3  Celle-ci est la ligne 3
     4  Celle-ci est la ligne 4
     5  Celle-ci est la ligne 5
     6  Celle-ci est la ligne 6
     7  Celle-ci est la ligne 7
     8  Celle-ci est la ligne 8
     9  Celle-ci est la ligne 9
    10  Celle-ci est la ligne 10
    11  Celle-ci est la ligne 11
    12  Celle-ci est la ligne 12
    13  Celle-ci est la ligne 13
    14  Unix est super
    15  Celle-ci est la ligne 14
    16  Celle-ci est la ligne 15
    17  Celle-ci est la ligne 16
    18  Celle-ci est la ligne 17
    19  Celle-ci est la ligne 18
    20  Celle-ci est la ligne 19
    21  Celle-ci est la ligne 20
    22  Celle-ci est la ligne 21
    23  Celle-ci est la ligne 22
    24  Celle-ci est la ligne 23
    25  Celle-ci est la ligne 24Unix est super

Passez maintenant en mode Commande en appuyant sur la touche Echap puis placez-vous au début de la première ligne de l'écran en utilisant le commande H.

Recherche de Texte

Touche(s) Description
/ chaîne Recherche chaîne vers le bas
// Recherche l'occurence suivante vers le bas de la dernière recherche
? chaîne Recherche chaîne vers le haut
?? Recherche l'occurence suivante vers le haut de la dernière recherche
n Recherche l'occurence suivante de chaîne dans le sens de la recherche
N Recherche l'occurence précédente de chaîne dans le sens de la recherche
:g/chaîne/s//chaîne1/g Recherche et remplace chaîne par chaîne1

Recherchez maintenant la chaîne super grâce à la commande /super suivez par la touche ↵ Entrée. Recherchez ensuite les deux occurrences suivantes en utilisant la commande // suivez par la touche ↵ Entrée puis // suivez par la touche ↵ Entrée. A ce stade votre curseur doit se trouver sur le dernier mot de la dernière ligne de votre écran.

Recherchez ensuite la chaîne super vers le haut en utilisant la commande ?super suivez par la touche ↵ Entrée. Votre curseur doit se trouver sur la ligne 14.

Appuyez maintenant sur la touche n. Votre curseur doit se trouver sur la première ligne. Appuyez ensuite sur la touche N. Votre curseur doit se trouver sur la ligne 14.

Appuyez sur la commande H. Remplacez maintenant le mot super par wonderful en utilisant la commande :g/super/s//wonderful/g suivez par la touche ↵ Entrée :

     1  Celle-ci est la Unix est wonderfulligne 1
     2  Celle-ci est la ligne 2
     3  Celle-ci est la ligne 3
     4  Celle-ci est la ligne 4
     5  Celle-ci est la ligne 5
     6  Celle-ci est la ligne 6
     7  Celle-ci est la ligne 7
     8  Celle-ci est la ligne 8
     9  Celle-ci est la ligne 9
    10  Celle-ci est la ligne 10
    11  Celle-ci est la ligne 11
    12  Celle-ci est la ligne 12
    13  Celle-ci est la ligne 13
    14  Unix est wonderful
    15  Celle-ci est la ligne 14
    16  Celle-ci est la ligne 15
    17  Celle-ci est la ligne 16
    18  Celle-ci est la ligne 17
    19  Celle-ci est la ligne 18
    20  Celle-ci est la ligne 19
    21  Celle-ci est la ligne 20
    22  Celle-ci est la ligne 21
    23  Celle-ci est la ligne 22
    24  Celle-ci est la ligne 23
    25  Celle-ci est la ligne 24Unix est wonderful
:g/super/s//wonderful/g

<note warning> ATTENTION : toutes les occurrences de la chaîne super sont remplacées, par exemple le mot superligne devient wonderfulligne. </note>

Suppression de Texte

Touche(s) Description
x Suppression du caractère courant
X Suppression du caractère à gauche du curseur
5x Suppression de 5 caractères à partir du caractère courant
dw Suppression du mot courant
5dw Suppression de 5 mots à partir du caractère courant
dd ou :d Suppression de la ligne courante
5dd Suppression de 5 lignes à partir de la ligne courante
:5,7 d Suppression des lignes 5, 6 et 7

Placez-vous sur la ligne 14 et supprimez-la grâce à la commande dd. Vous obtiendrez donc un résultat similaire à celui-ci :

     1  Celle-ci est la Unix est wonderfulligne 1
     2  Celle-ci est la ligne 2
     3  Celle-ci est la ligne 3
     4  Celle-ci est la ligne 4
     5  Celle-ci est la ligne 5
     6  Celle-ci est la ligne 6
     7  Celle-ci est la ligne 7
     8  Celle-ci est la ligne 8
     9  Celle-ci est la ligne 9
    10  Celle-ci est la ligne 10
    11  Celle-ci est la ligne 11
    12  Celle-ci est la ligne 12
    13  Celle-ci est la ligne 13
    14  Celle-ci est la ligne 14
    15  Celle-ci est la ligne 15
    16  Celle-ci est la ligne 16
    17  Celle-ci est la ligne 17
    18  Celle-ci est la ligne 18
    19  Celle-ci est la ligne 19
    20  Celle-ci est la ligne 20
    21  Celle-ci est la ligne 21
    22  Celle-ci est la ligne 22
    23  Celle-ci est la ligne 23
    24  Celle-ci est la ligne 24Unix est wonderful
    25  Celle-ci est la ligne 25

Supprimez maintenant les lignes 4, 5 et 6 grâce à la commande :4,6 d. Vous obtiendrez un résultat similaire à celui-ci :

     1  Celle-ci est la Unix est wonderfulligne 1
     2  Celle-ci est la ligne 2
     3  Celle-ci est la ligne 3
     4  Celle-ci est la ligne 7
     5  Celle-ci est la ligne 8
     6  Celle-ci est la ligne 9
     7  Celle-ci est la ligne 10
     8  Celle-ci est la ligne 11
     9  Celle-ci est la ligne 12
    10  Celle-ci est la ligne 13
    11  Celle-ci est la ligne 14
    12  Celle-ci est la ligne 15
    13  Celle-ci est la ligne 16
    14  Celle-ci est la ligne 17
    15  Celle-ci est la ligne 18
    16  Celle-ci est la ligne 19
    17  Celle-ci est la ligne 20
    18  Celle-ci est la ligne 21
    19  Celle-ci est la ligne 22
    20  Celle-ci est la ligne 23
    21  Celle-ci est la ligne 24Unix est wonderful
    22  Celle-ci est la ligne 25
~
~
~
3 lignes

Copier - Coller

Touche(s) Description
yy ou Y Copie la ligne courante
V Sélectionner un bloc
p Colle la ligne couper ou copier en dessous de la ligne courante
P Colle la ligne couper ou copier en dessus de la ligne courante
:2,3 co 7 Copie des lignes 2 à 3 à la ligne située en dessous de la ligne 7

Placez votre curseur sur la ligne 3. Copiez celle-ci grâce à la commande yy. Placez votre curseur sur la ligne 5 et utilisez la commande p. Vous obtiendrez le résultat suivant :

     1  Celle-ci est la Unix est wonderfulligne 1
     2  Celle-ci est la ligne 2
     3  Celle-ci est la ligne 3
     4  Celle-ci est la ligne 7
     5  Celle-ci est la ligne 8
     6  Celle-ci est la ligne 3
     7  Celle-ci est la ligne 9
     8  Celle-ci est la ligne 10
     9  Celle-ci est la ligne 11
    10  Celle-ci est la ligne 12
    11  Celle-ci est la ligne 13
    12  Celle-ci est la ligne 14
    13  Celle-ci est la ligne 15
    14  Celle-ci est la ligne 16
    15  Celle-ci est la ligne 17
    16  Celle-ci est la ligne 18
    17  Celle-ci est la ligne 19
    18  Celle-ci est la ligne 20
    19  Celle-ci est la ligne 21
    20  Celle-ci est la ligne 22
    21  Celle-ci est la ligne 23
    22  Celle-ci est la ligne 24Unix est wonderful
    23  Celle-ci est la ligne 25
~
~

Placez votre curseur sur la ligne 4 et utilisez la commande Y. Placez votre curseur sur la ligne 6 et utilisez la commande P. Vous obtiendrez le résultat suivant :

     1  Celle-ci est la Unix est wonderfulligne 1
     2  Celle-ci est la ligne 2
     3  Celle-ci est la ligne 3
     4  Celle-ci est la ligne 7
     5  Celle-ci est la ligne 8
     6  Celle-ci est la ligne 7
     7  Celle-ci est la ligne 3
     8  Celle-ci est la ligne 9
     9  Celle-ci est la ligne 10
    10  Celle-ci est la ligne 11
    11  Celle-ci est la ligne 12
    12  Celle-ci est la ligne 13
    13  Celle-ci est la ligne 14
    14  Celle-ci est la ligne 15
    15  Celle-ci est la ligne 16
    16  Celle-ci est la ligne 17
    17  Celle-ci est la ligne 18
    18  Celle-ci est la ligne 19
    19  Celle-ci est la ligne 20
    20  Celle-ci est la ligne 21
    21  Celle-ci est la ligne 22
    22  Celle-ci est la ligne 23
    23  Celle-ci est la ligne 24Unix est wonderful
    24  Celle-ci est la ligne 25
~

Utilisez la commande :4,5 co 15. Vous obtiendrez le résultat suivant :

     1  Celle-ci est la Unix est wonderfulligne 1
     2  Celle-ci est la ligne 2
     3  Celle-ci est la ligne 3
     4  Celle-ci est la ligne 7
     5  Celle-ci est la ligne 8
     6  Celle-ci est la ligne 7
     7  Celle-ci est la ligne 3
     8  Celle-ci est la ligne 9
     9  Celle-ci est la ligne 10
    10  Celle-ci est la ligne 11
    11  Celle-ci est la ligne 12
    12  Celle-ci est la ligne 13
    13  Celle-ci est la ligne 14
    14  Celle-ci est la ligne 15
    15  Celle-ci est la ligne 16
    16  Celle-ci est la ligne 7
    17  Celle-ci est la ligne 8
    18  Celle-ci est la ligne 17
    19  Celle-ci est la ligne 18
    20  Celle-ci est la ligne 19
    21  Celle-ci est la ligne 20
    22  Celle-ci est la ligne 21
    23  Celle-ci est la ligne 22
    24  Celle-ci est la ligne 23
    25  Celle-ci est la ligne 24Unix est wonderful
2 lignes

Notez que les lignes 4 et 5 ont été copiées après la ligne 15 :

...
    15  Celle-ci est la ligne 16
    16  Celle-ci est la ligne 7
    17  Celle-ci est la ligne 8
...

Couper - Coller

Touche(s) Description
:2,3 m 7 Déplace les lignes 2 à 3 à la ligne en dessous de la ligne 7

Utilisez la commande :4,6 m 20. Vous obtiendrez le résultat suivant :

     1  Celle-ci est la Unix est wonderfulligne 1
     2  Celle-ci est la ligne 2
     3  Celle-ci est la ligne 3
     4  Celle-ci est la ligne 3
     5  Celle-ci est la ligne 9
     6  Celle-ci est la ligne 10
     7  Celle-ci est la ligne 11
     8  Celle-ci est la ligne 12
     9  Celle-ci est la ligne 13
    10  Celle-ci est la ligne 14
    11  Celle-ci est la ligne 15
    12  Celle-ci est la ligne 16
    13  Celle-ci est la ligne 7
    14  Celle-ci est la ligne 8
    15  Celle-ci est la ligne 17
    16  Celle-ci est la ligne 18
    17  Celle-ci est la ligne 19
    18  Celle-ci est la ligne 7
    19  Celle-ci est la ligne 8
    20  Celle-ci est la ligne 7
    21  Celle-ci est la ligne 20
    22  Celle-ci est la ligne 21
    23  Celle-ci est la ligne 22
    24  Celle-ci est la ligne 23
    25  Celle-ci est la ligne 24Unix est wonderful
3 lignes

Notez qu'en supprimant les lignes 4 à 6, la ligne 20 est devenue la ligne 17. Les trois lignes coupées apparaissent donc après la ligne 17 et non après la ligne 20 :

...
    17  Celle-ci est la ligne 19
    18  Celle-ci est la ligne 7
    19  Celle-ci est la ligne 8
    20  Celle-ci est la ligne 7
...

Configuration

VI peut être configuré par chaque utilisateur en créant un fichier dénommé ~/.exrc. Ce fichier doit contenir les commandes des options comme celles-ci sont tapées sur la ligne de commande mais sans le caractère :. Le fichier ~/.exrc est lu par VI lors de son lancement et les options mises en place. Par exemple le fichier suivant activera les options de la numérotation des lignes et la visibilité des caractères cachés :

set nu
set list
  1 Celle-ci est la Linux est wonderfulligne 1$
  2 Celle-ci est la ligne 2$
  3 Celle-ci est la ligne 3$
  4 Celle-ci est la ligne 3$
  5 Celle-ci est la ligne 9$
  6 Celle-ci est la ligne 10$
...

<html> <center> Copyright © 2011-2018 I2TCH LIMITED.<br><br> </center> </html>

Menu