Éditeur de texte VI
Introduction
Visual (VI) est un éditeur de texte très populaire sous Linux malgré une ergonomie qui semble limitée. C’est en effet un éditeur entièrement en mode texte : chacune des actions se faisant avec une touche du clavier ou des commandes dédiées.
Très puissant, il est surtout très pratique puisqu’il est dans l’ensemble minimal des applications de base. Il est donc accessible en cas de défaillance du système. Son universalité (il est présent sur toutes les distributions Linux et sous Unix) en fait un outil incontournable de l’administrateur.
Ses fonctionnalités sont :
-
Insertion, suppression, modification de texte ;
-
Copie de mots, lignes ou blocs de texte ;
-
Recherche et remplacement de caractères.
La commande vi
La commande vi
ouvre l’éditeur de texte VI.
vi [-c commande] [fichier]
Exemple :
$ vi /home/stagiaire/fichier
Option | Information |
---|---|
|
Exécute VI en précisant une commande à l’ouverture |
Si le fichier existe à l’endroit mentionné par le chemin, celui-ci est lu par VI qui se place en mode commandes.
Si le fichier n’existe pas, VI ouvre un fichier vierge et une page vide est affichée à l’écran. À l’enregistrement du fichier, celui-ci prendra le nom précisé avec la commande.
Si la commande vi
est exécutée sans préciser de nom de fichier, VI ouvre un fichier vierge et une page vide est affichée à l’écran. À l’enregistrement du fichier, VI demandera un nom de fichier.
L’éditeur vim
reprend l’interface et les fonctions de VI avec de nombreuses améliorations.
vim [-c commande] [fichier]
Parmi ces améliorations, l’utilisateur dispose de la coloration syntaxique, très utile pour éditer des scripts shell ou des fichiers de configuration.
Pendant une session, VI utilise un fichier tampon dans lequel il inscrit toutes les modifications effectuées par l’utilisateur.
Tant que l’utilisateur n’a pas enregistré son travail, le fichier d’origine n’est pas modifié. |
Au démarrage, VI est en mode commandes.
Une ligne de texte se termine en appuyant sur kbd:[ENTREE] mais si l’écran n’est pas assez large, VI effectue des retours à la ligne automatiques, configuration wrap par défaut. Ces retours à la ligne peuvent ne pas être souhaités, c’est la configuration nowrap. |
Pour sortir de VI, il faut, depuis le mode Commandes, taper sur kbd:[:] puis saisir :
-
q
pour sortir sans sauvegarder (quit); -
w
pour enregistrer son travail (write); -
wq
(write quit) oux
(eXit) pour sortir et sauvegarder.
Pour forcer la sortie sans confirmation, il faut ajouter ! aux commandes précédentes.
Il n’y a pas de sauvegarde périodique, il faut donc penser à sauvegarder son travail régulièrement. |
Mode opératoires
Dans VI, il existe 3 modes de travail :
-
Le mode commandes ;
-
Le mode insertion ;
-
Le mode ex.
La philosophie de VI est d’alterner entre le mode commandes et le mode insertion.
Le troisième mode, ex, est un mode de commandes de bas de page issu d’un ancien éditeur de texte.
Le mode Commandes
C’est le mode par défaut au démarrage de VI. Pour y accéder à partir d’un des autres modes, il suffit de taper sur la touche kbd:[ECHAP].
Toutes les saisies sont interprétées comme des commandes et les actions correspondantes sont exécutées. Ce sont essentiellement des commandes permettant la modification de texte (copier, coller, annuler, …).
Les commandes ne s’affichent pas à l’écran.
Le mode Insertion
C’est le mode de modification du texte. Pour y accéder à partir du mode commandes, il faut taper sur des touches particulières qui effectueront une action en plus de changer de mode.
La saisie du texte ne s’effectue pas directement sur le fichier mais dans une zone tampon de la mémoire. Les modifications ne sont effectives que lors de l’enregistrement du fichier.
Déplacer le curseur
En mode commandes, il existe plusieurs façons de déplacer le curseur.
La souris n’étant pas active dans un environnement texte mais l’est dans un environnement graphique, il est possible de le déplacer caractère par caractère, mais des raccourcis existent pour aller plus vite.
VI reste en mode commandes après le déplacement du curseur.
Le curseur est placé sous le caractère désiré.
À partir d’un caractère
-
Déplacement d’un ou
n
caractères vers la gauche :
[←
], [n
][←
], [h
] ou encore [n
][h
]
-
Déplacement d’un ou
n
caractères vers la droite :
[→
], [n
][→
], [l
] ou encore [n
][l
]
-
Déplacement d’un ou
n
caractères vers le haut :
[↑
], [n
][↑
], [k
] ou encore [n
][k
]
-
Déplacement d’un ou
n
caractères vers le bas :
[↓
], [n
][↓
], [j
] ou encore [n
][j
]
-
Déplacement à la fin de la ligne :
[$
] ou [FIN
]
-
Déplacement au début de la ligne :
[0
] ou [POS1
]
À partir du premier caractère d’un mot
Les mots sont constitués de lettres ou de chiffres. Les caractères de ponctuation et les apostrophes séparent les mots.
Si le curseur se trouve au milieu d’un mot [w
] passe au mot suivant, [b
] passe au début du mot.
Si la ligne est finie, VI passe automatiquement à la ligne suivante.
-
Déplacement d’un ou
n
mots vers la droite :
[w
] ou [n
][w
]
-
Déplacement d’un ou
n
mots vers la gauche :
[b
] ou [n
][b
]
Insérer du texte
En mode commandes, il existe plusieurs façons d’insérer du texte.
VI bascule en mode insertion après la saisie d’une de ces touches.
VI bascule en mode insertion. Il faudra donc appuyer sur la touche kbd:[ECHAP] pour revenir en mode commandes. |
Par rapport à un caractère
-
Insertion de texte avant un caractère :
[i
] (insert)
-
Insertion de texte après un caractère :
[a
] (append)
Caractères, mots et lignes
VI permet l’édition de texte en gérant :
-
les caractères,
-
les mots,
-
les lignes.
Il est possible pour chaque cas de :
-
supprimer,
-
remplacer,
-
copier,
-
couper,
-
coller.
Ces opérations se font en mode commandes.
Caractères
-
Supprimer un ou
n
caractères :
[x
] ou [n
][x
]
-
Remplacer un caractère par un autre :
[r
][caractère
]
-
Remplacer plus d’un caractère par d’autres :
[R
][caractères
][ECHAP
]
La commande [ |
Mots
-
Supprimer (couper) un ou
n
mots :
[d
][w
] ou [n
][d
][w
]
-
Copier un ou
n
mots :
[y
][w
] ou [n
][y
][w
]
-
Coller un mot une ou
n
fois après le curseur :
[p
] ou [n
][p
]
-
Coller un mot une ou
n
fois avant le curseur :
[P
] ou [n
][P
]
-
Remplacer un mot :
[c
][w
][mot
][ECHAP
]
Il faut positionner le curseur sous le premier caractère du mot à couper (ou copier) sinon VI coupera (ou copiera) seulement la partie du mot entre le curseur et la fin. Supprimer un mot revient à le couper. S’il n’est pas collé ensuite, le tampon est vidé et le mot est supprimé. |
Lignes
-
Supprimer (couper) une ou
n
lignes :
[d
][d
] ou [n
][d
][d
]
-
Copier une ou
n
lignes :
[y
][y
] ou [n
][y
][y
]
-
Coller ce qui a été copié ou supprimé une ou
n
fois après la ligne courante :
[p
] ou [n
][p
]
-
Coller ce qui a été copié ou supprimé une ou
n
fois avant la ligne courante :
[P
] ou [n
][P
]
-
Supprimer (couper) du début de la ligne jusqu’au curseur :
[d
][0
]
-
Supprimer (couper) du curseur jusqu’à la fin de la ligne :
[d
][$
]
-
Copier du début de la ligne jusqu’au curseur :
[y
][0
]
-
Copier du curseur jusqu’à la fin de la ligne :
[y
][$
]
-
Supprimer (couper) le texte à partir de la ligne courante :
[d
][L
] ou [d
][G
]
-
Copier le texte à partir de la ligne courante :
[y
][L
] ou [y
][G
]
Commandes EX
Le mode Ex permet d’agir sur le fichier (enregistrement, mise en page, options, …). C’est aussi en mode Ex que se saisissent les commandes de recherche et de remplacement. Les commandes sont affichées en bas de page et doivent être validées avec la touche kbd:[ENTREE].
Pour passer en mode Ex, du mode commandes, taper [:
].
Rechercher une chaîne de caractères
-
Rechercher une chaîne de caractères à partir du curseur :
/chaîne
-
Rechercher une chaîne de caractères avant le curseur :
?chaîne
-
Aller à l’occurrence trouvée suivante :
[n
]
-
Aller à l’occurrence trouvée précédente :
[N
]
Il existe des caractères jokers permettant de faciliter la recherche sous VI.
-
[]
: Recherche une plage de caractères ou d’un unique caractère dont les valeurs possibles sont précisées.
Exemple :
/[Mm]ot
: recherche mot et Mot
/[1-9]mot
: recherche 1mot, 2mot … `x`mot où x
est un nombre
-
^
: Recherche d’une chaîne débutant la ligne.
Exemple :
/^Mot
-
$
: Recherche d’une chaîne finissant la ligne.
Exemple :
/Mot$
-
.
: Recherche d’un mot avec une lettre inconnue.
Exemple :
/M.t
: recherche mot, mat …
-
*
: Recherche d’un ou de plusieurs caractères, quels qu’ils soient.
Exemple :
/M*t
Remplacer une chaîne de caractères
De la 1ère à la dernière ligne du texte, remplacer la chaîne recherchée par la chaîne précisée :
:1,$ s/recherche/remplace
De la ligne n
à la ligne m
, remplacer la chaîne recherchée par la chaîne précisée :
:n,m s/recherche/remplace
Par défaut, seule la première occurrence trouvée de chaque ligne est remplacée. Pour forcer le remplacement de chaque occurrence, il faut ajouter /g
à la fin de la commande :
:n,m s/recherche/remplace/g
Parcourir tout un fichier pour y remplacer la chaîne recherchée par la chaîne précisée :
:% s/recherche/remplace
Opérations sur les fichiers
-
Enregistrer le fichier :
:w
-
Enregistrer sous un autre nom :
:w fichier
-
Enregistrer de la ligne
n
à la lignem
dans un autre fichier :
:n,m w fichier
-
Recharger le dernier enregistrement du fichier :
e!
-
Coller le contenu d’un autre fichier après le curseur :
:r fichier
-
Quitter l’édition d’un fichier sans enregistrer :
:q
-
Quitter l’édition d’un fichier qui a été modifié pendant la session mais sans enregistrer :
:q!
-
Quitter le fichier et enregistrer :
:wq
ou :x
Autres fonctions
Il est possible d’exécuter VI en précisant les options à charger pour la session. Pour cela, il faut utiliser l’option -c :
$ vi -c "set nu" /home/stagiaire/fichier
Il est aussi possible de saisir les commandes Ex dans un fichier nommé .exrc
mis dans le répertoire de connexion de l’utilisateur. À chaque démarrage de VI ou de VIM, les commandes seront lues et appliquées.