Version : 2024.01

Dernière mise-à-jour :

LDF402 - L’Éditeur VI

Contenu du Module

LDF402 - L’Éditeur VI

Contenu du Module

Présentation

LAB #1 - Créer, ouvrir et fermer des fichiers

1.1 - Commandes

1.2 - Créer un nouveau fichier avec VI

1.3 - Ouvrir un fichier en mode lecture seule avec la commande view

1.4 - Ouvrir un fichier en mode lecture-écriture avec la commande vi

LAB #2 - La Commande set

2.1 - Commandes

2.2 - Activer la numérotation des lignes avec la commande set

LAB #3 - Se Déplacer dans un Fichier

3.1 - Commandes

LAB #4 - Insertion de Texte

4.1 - Commandes

4.2 - Insérer du texte

LAB #5 - Recherche de Texte

5.1 - Commandes

5.2 - Rechercher et remplacer du texte

LAB #6 - Suppression de Texte

6.1 - Commandes

6.2 - Supprimer des lignes

LAB #7 -Copier, Couper et Coller

7.1 - Commandes

7.2 - Copier, couper et coller du texte

LAB #8 -Configuration d'une Interface VI Personnelle

Présentation

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

Commande

Ex-mode

Insertion

En mode commande, il est possible de saisir des commandes telles i pour insérer du texte.

En mode Ex-Mode, la plupart des commandes VI sont précédées par la touche :, par exemple :q pour quitter.

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.

LAB #1 - Créer, ouvrir et fermer des fichiers

1.1 - Commandes

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
ZZ	La même chose que :wq
: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
u	Annulation de la dernière commande
U	Annulation des modifications apportées à la ligne en cours
:q!	Quitter sans sauvegarder

1.2 - Créer un nouveau fichier avec VI

Copiez les 25 lignes ci-dessous :

This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
This is line 9
This is line 10
This is line 11
This is line 12
This is line 13
This is line 14
This is line 15
This is line 16
This is line 17
This is line 18
This is line 19
This is line 20
This is line 21
This is line 22
This is line 23
This is line 24
This is line 25

Créez un nouveau fichier appelé vitext en utilisant la commande vi:

[trainee@centos8 ~]$ vi vitext

A faire - Appuyez sur la touche i de votre clavier pour basculer en mode insertion. Cliquez le bouton central ( la roue ) de votre souris afin de coller dans le fichier les lignes 1 à 25. Utilisez ensuite la touche Echap pour basculer en mode Commande. Appuyez sur la touche : suivi par la touche X pour sauvegarder et quitter VI.

1.3 - Ouvrir un fichier en mode lecture seule avec la commande view

Ouvrez maintenant le fichier /home/trainee/vitext en lecture seule :

[trainee@centos8 ~]$ view vitext

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

This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
This is line 9
This is line 10
This is line 11
This is line 12
This is line 13
This is line 14
This is line 15
This is line 16
This is line 17
This is line 18
This is line 19
This is line 20
This is line 21
This is line 22
This is line 23
This is line 24
This is line 25
~
"vitext" [readonly] 25L, 391B

Attention : Assurez-vous que vous ne voyez que les 25 premières lignes de ce fichier.

Important : Notez la présence de la dernière ligne avec la mention [readonly].

1.4 - Ouvrir un fichier en mode lecture-écriture avec la commande vi

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

[trainee@centos8 ~]$ vi vitext

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

This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
This is line 9
This is line 10
This is line 11
This is line 12
This is line 13
This is line 14
This is line 15
This is line 16
This is line 17
This is line 18
This is line 19
This is line 20
This is line 21
This is line 22
This is line 23
This is line 24
This is line 25
~
"vitext" 25 lines, 391 bytes

Important : Notez que vi est lancé en mode Commande.

LAB #2 - La Commande set

2.1 - Commandes

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

2.2 - Activer la numérotation des lignes avec la commande set

Activer la numérotation des lignes avec la commande :set nu ou la commande :set number :

This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
This is line 9
This is line 10
This is line 11
This is line 12
This is line 13
This is line 14
This is line 15
This is line 16
This is line 17
This is line 18
This is line 19
This is line 20
This is line 21
This is line 22
This is line 23
This is line 24
This is line 25
~
:set nu

Sans appuyer sue la touche Entrée, ajoutez mber à la ligne :set nu :

This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
This is line 9
This is line 10
This is line 11
This is line 12
This is line 13
This is line 14
This is line 15
This is line 16
This is line 17
This is line 18
This is line 19
This is line 20
This is line 21
This is line 22
This is line 23
This is line 24
This is line 25
~
:set number [Enter] <<<<<<<<<< Appuyez sur la touche Entrée

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

1 This is line 1
2 This is line 2
3 This is line 3
4 This is line 4
5 This is line 5
6 This is line 6
7 This is line 7
8 This is line 8
9 This is line 9
10 This is line 10
11 This is line 11
12 This is line 12
13 This is line 13
14 This is line 14
15 This is line 15
16 This is line 16
17 This is line 17
18 This is line 18
19 This is line 19
20 This is line 20
21 This is line 21
22 This is line 22
23 This is line 23
24 This is line 24
25 This is line 25
~
:set number

LAB #3 - Se Déplacer dans un Fichier

3.1 - Commandes

Commande	Description
h ou &larr; ou Backspace	Déplacement du curseur un caractère vers la gauche
j ou &darr; ou ↵ Entrée	Déplacement du curseur une ligne vers le bas
k ou &uarr;	Déplacement du curseur une ligne vers le haut
l ou &rarr; 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

A faire : 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.

Important : Pour savoir pourquoi les touches H, J, K et L sont utilisés comme un pavé directionnel, consultez cette page.

LAB #4 - Insertion de Texte

4.1 - Commandes

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
R	Remplacement du texte existant
Echap	Passage du mode Insertion en mode Commande

4.2 - Inserer du texte

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 Linux is super. Vous obtiendrez un résultat similaire à celui-ci :

1 This is line 1
2 This is line 2
3 This is line 3
4 This is line 4
5 This is line 5
6 This is line 6
7 This is line 7
8 This is line 8
9 This is line 9
10 This is line 10
11 This is line 11
12 This is line 12
13 This is line 13
14 Linux is super <<<<<<<<<< ligne ajoutée
15 This is line 14
16 This is line 15
17 This is line 16
18 This is line 17
19 This is line 18
20 This is line 19
21 This is line 20
22 This is line 21
23 This is line 22
24 This is line 23
25 This is line 24
26 This is line 25
:set number

Attention - Ne changez pas la taille de votre terminal. Vous ne devez visualiser QUE les premières 25 lignes.

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 Linux is super. Vous obtiendrez un résultat similaire à celui-ci :

1 This is line 1
2 This is line 2
3 This is line 3
4 This is line 4
5 This is line 5
6 This is line 6
7 This is line 7
8 This is line 8
9 This is line 9
10 This is line 10
11 This is line 11
12 This is line 12
13 This is line 13
14 Linux is super
15 This is line 14
16 This is line 15
17 This is line 16
18 This is line 17
19 This is line 18
20 This is line 19
21 This is line 20
22 This is line 21
23 This is line 22
24 This is line 23
25 This is line 24
26 This is line 25Linux est super <<<<<<<<<< texte ajouté
:set numberH

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 quatrième mot en utilisant la commande w trois fois. Passez en mode Insertion en utilisant la commande i puis saisissez de nouveau la phrase Linux is super. Vous obtiendrez un résultat similaire à celui-ci :

1 This is line Linux is super1 <<<<<<<<<< texte ajouté
2 This is line 2
3 This is line 3
4 This is line 4
5 This is line 5
6 This is line 6
7 This is line 7
8 This is line 8
9 This is line 9
10 This is line 10
11 This is line 11
12 This is line 12
13 This is line 13
14 Linux is super
15 This is line 14
16 This is line 15
17 This is line 16
18 This is line 17
19 This is line 18
20 This is line 19
21 This is line 20
22 This is line 21
23 This is line 22
24 This is line 23
25 This is line 24
26 This is line 25Linux est super
:set number

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.

LAB #5 - Recherche de Texte

5.1 - Commandes

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

5.2 - Rechercher et remplacer du texte

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 This is line Linux is super1
2 This is line 2
3 This is line 3
4 This is line 4
5 This is line 5
6 This is line 6
7 This is line 7
8 This is line 8
9 This is line 9
10 This is line 10
11 This is line 11
12 This is line 12
13 This is line 13
14 Linux is super
15 This is line 14
16 This is line 15
17 This is line 16
18 This is line 17
19 This is line 18
20 This is line 19
21 This is line 20
22 This is line 21
23 This is line 22
24 This is line 23
25 This is line 24
26 This is line 25Linux est super
:g/super/s//wonderful/g [Enter] <<<<<<<<<< Appuyez sur la touche Entrée

VI vous confirme le remplacement :

1 This is line Linux is wonderful1
2 This is line 2
3 This is line 3
4 This is line 4
5 This is line 5
6 This is line 6
7 This is line 7
8 This is line 8
9 This is line 9
10 This is line 10
11 This is line 11
12 This is line 12
13 This is line 13
14 Linux is wonderful
15 This is line 14
16 This is line 15
17 This is line 16
18 This is line 17
19 This is line 18
20 This is line 19
21 This is line 20
22 This is line 21
23 This is line 22
24 This is line 23
25 This is line 24
26 This is line 25Linux est wonderful
3 substitutions on 3 lines

LAB #6 - Suppression de Texte

6.1 - Commandes

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

6.2 - Supprimer des lignes

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

1 This is line Linux is wonderful1
2 This is line 2
3 This is line 3
4 This is line 4
5 This is line 5
6 This is line 6
7 This is line 7
8 This is line 8
9 This is line 9
10 This is line 10
11 This is line 11
12 This is line 12
13 This is line 13
14 This is line 14 <<<<<<<<<< la ligne 15 est devenue la ligne 14
15 This is line 15
16 This is line 16
17 This is line 17
18 This is line 18
19 This is line 19
20 This is line 20
21 This is line 21
22 This is line 22
23 This is line 23
24 This is line 24
25 This is line 25Linux est wonderful
~
3 substitutions on 3 lines

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

1 This is line Linux is wonderful1
2 This is line 2
3 This is line 3
4 This is line 4
5 This is line 5
6 This is line 6
7 This is line 7
8 This is line 8
9 This is line 9
10 This is line 10
11 This is line 11
12 This is line 12
13 This is line 13
14 This is line 14
15 This is line 15
16 This is line 16
17 This is line 17
18 This is line 18
19 This is line 19
20 This is line 20
21 This is line 21
22 This is line 22
23 This is line 23
24 This is line 24
25 This is line 25Linux est wonderful
~
:4,6 d [Enter] <<<<<<<<<< Appuyez sur la touche Entrée

1 This is line Linux is wonderful1
2 This is line 2
3 This is line 3
4 This is line 7 <<<<<<<<<< les lignes 4,5 et 6 ont été supprimées. La ligne 7 est devenue la ligne 4.
5 This is line 8
6 This is line 9
7 This is line 10
8 This is line 11
9 This is line 12
10 This is line 13
11 This is line 14
12 This is line 15
13 This is line 16
14 This is line 17
15 This is line 18
16 This is line 19
17 This is line 20
18 This is line 21
19 This is line 22
20 This is line 23
21 This is line 24
22 This is line 25Linux est wonderful
~
~
~
~
3 fewer lines

LAB #7 -Copier, Couper et Coller

7.1 - Commandes

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
:2,3 m 7	Déplace les lignes 2 à 3 à la ligne en dessous de la ligne 7

7.2 - Copier, couper et coller du texte

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 This is line Linux is wonderful1
2 This is line 2
3 This is line 3 <<<<<<<<<< ligne copiée
4 This is line 7
5 This is line 8
6 This is line 3 <<<<<<<<<< ligne collée
7 This is line 9
8 This is line 10
9 This is line 11
10 This is line 12
11 This is line 13
12 This is line 14
13 This is line 15
14 This is line 16
15 This is line 17
16 This is line 18
17 This is line 19
18 This is line 20
19 This is line 21
20 This is line 22
21 This is line 23
22 This is line 24
23 This is line 25Linux est wonderful
~
~
~
3 fewer lines

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 This is line Linux is wonderful1
2 This is line 2
3 This is line 3
4 This is line 7 <<<<<<<<<< ligne copiée
5 This is line 8
6 This is line 7 <<<<<<<<<< ligne collée
7 This is line 3
8 This is line 9
9 This is line 10
10 This is line 11
11 This is line 12
12 This is line 13
13 This is line 14
14 This is line 15
15 This is line 16
16 This is line 17
17 This is line 18
18 This is line 19
19 This is line 20
20 This is line 21
21 This is line 22
22 This is line 23
23 This is line 24
24 This is line 25Linux est wonderful
~
~
3 fewer lines

Utilisez la commande :4,5 co 15 :

1 This is line Linux is wonderful1
2 This is line 2
3 This is line 3
4 This is line 7
5 This is line 8
6 This is line 7
7 This is line 3
8 This is line 9
9 This is line 10
10 This is line 11
11 This is line 12
12 This is line 13
13 This is line 14
14 This is line 15
15 This is line 16
16 This is line 17
17 This is line 18
18 This is line 19
19 This is line 20
20 This is line 21
21 This is line 22
22 This is line 23
23 This is line 24
24 This is line 25Linux est wonderful
~
~
:4,5 co 15 [Enter] <<<<<<<<<< Appuyez sur la touche Entrée

Vous obtiendrez le résultat suivant :

1 This is line Linux is wonderful1
2 This is line 2
3 This is line 3
4 This is line 7 <<<<<<<<<< ligne copiée
5 This is line 8 <<<<<<<<<< ligne copiée
6 This is line 7
7 This is line 3
8 This is line 9
9 This is line 10
10 This is line 11
11 This is line 12
12 This is line 13
13 This is line 14
14 This is line 15
15 This is line 16
16 This is line 7 <<<<<<<<<< ligne collée
17 This is line 8 <<<<<<<<<< ligne collée
18 This is line 17
19 This is line 18
20 This is line 19
21 This is line 20
22 This is line 21
23 This is line 22
24 This is line 23
25 This is line 24
26 This is line 25Linux est wonderful
:4,5 co 15

Utilisez la commande :4,6 m 20 :

1 This is line Linux is wonderful1
2 This is line 2
3 This is line 3
4 This is line 7 <<<<<<<<<< ligne à déplacer
5 This is line 8 <<<<<<<<<< ligne à déplacer
6 This is line 7 <<<<<<<<<< ligne à déplacer
7 This is line 3
8 This is line 9
9 This is line 10
10 This is line 11
11 This is line 12
12 This is line 13
13 This is line 14
14 This is line 15
15 This is line 16
16 This is line 7
17 This is line 8
18 This is line 17
19 This is line 18
20 This is line 19
21 This is line 20
22 This is line 21
23 This is line 22
24 This is line 23
25 This is line 24
26 This is line 25Linux est wonderful
:4,6 m 20 [Enter] <<<<<<<<<< Appuyez sur la touche Entrée

Vous obtiendrez le résultat suivant :

1 This is line Linux is wonderful1
2 This is line 2
3 This is line 3
4 This is line 3
5 This is line 9
6 This is line 10
7 This is line 11
8 This is line 12
9 This is line 13
10 This is line 14
11 This is line 15
12 This is line 16
13 This is line 7
14 This is line 8
15 This is line 17
16 This is line 18
17 This is line 19
18 This is line 7 <<<<<<<<<< ligne à déplacée
19 This is line 8 <<<<<<<<<< ligne à déplacée
20 This is line 7 <<<<<<<<<< ligne à déplacée
21 This is line 20
22 This is line 21
23 This is line 22
24 This is line 23
25 This is line 24
26 This is line 25Linux est wonderful
3 lines moved

Important : 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.

Sortez de VI en sauvegardant le fichier :

1 This is line Linux is wonderful1
2 This is line 2
3 This is line 3
4 This is line 3
5 This is line 9
6 This is line 10
7 This is line 11
8 This is line 12
9 This is line 13
10 This is line 14
11 This is line 15
12 This is line 16
13 This is line 7
14 This is line 8
15 This is line 17
16 This is line 18
17 This is line 19
18 This is line 7
19 This is line 8
20 This is line 7
21 This is line 20
22 This is line 21
23 This is line 22
24 This is line 23
25 This is line 24
26 This is line 25Linux est wonderful
:x [Enter] <<<<<<<<<< Appuyez sur la touche Entrée

LAB #8 -Configuration d'une Interface VI Personnelle

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 :

trainee@debian11:~$ vi .exrc
trainee@debian11:~$ cat .exrc
set nu
set list

Ouvrez maintenant le fichier /home/trainee/vitext avec VI:

[trainee@centos8 ~]$ vi vitext

1 This is line Linux is wonderful1$
2 This is line 2$
3 This is line 3$
4 This is line 3$
5 This is line 9$
6 This is line 10$
7 This is line 11$
8 This is line 12$
9 This is line 13$
10 This is line 14$
11 This is line 15$
12 This is line 16$
13 This is line 7$
14 This is line 8$
15 This is line 17$
16 This is line 18$
17 This is line 19$
18 This is line 7$
19 This is line 8$
20 This is line 7$
21 This is line 20$
22 This is line 21$
23 This is line 22$
24 This is line 23$
25 This is line 24$
26 This is line 25Linux est wonderful$
"vitext" 26 lines, 443 bytes

Copyright © 2024 Hugh Norris.