Éditeur de texte VI¶
Dans ce chapitre, vous allez apprendre à travailler avec l'éditeur VIsual
.
Objectifs : Dans ce chapitre, les futurs administrateurs Linux vont apprendre comment :
Utiliser les principales commandes de l’éditeur VI ;
Modifier un texte grâce à l’éditeur VI.
commandes utilisateurs, linux
Connaissances : **
Complexité : **
Temps de lecture : 20 minutes
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 et 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/rockstar/file
Option | Information |
---|---|
-c commande |
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.
Note
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.
Astuce
Une ligne de texte se termine en appuyant sur Enter 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 : puis saisir :
q
pour sortir sans sauvegarder (quit) ;w
pour enregistrer son travail (write) ;wq
(write quit) oux
(eXit) pour sortir et sauvegarder.
En mode command, cliquer sur la touche Z (en majuscule) deux fois de suite pour sauvegarder et sortir.
Pour forcer la sortie sans confirmation, il faut ajouter ! aux commandes précédentes.
Avertissement
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 Esc.
À ce stade, tous les frappe du clavier sont interprétés 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.
Le mode Ex¶
C’est le mode de modification du fichier. Pour y accéder, il faut d’abord passer en mode commandes, puis saisir la commande ex commençant fréquemment par le caractère :
.
La commande est validée en appuyant sur la touche Enter.
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 :
Left, N Left, H ou N H
- Déplacement d’un ou
n
caractères vers la droite :
Right, N Right, L ou N L
- Déplacement d’un ou
n
caractères vers le haut :
Up, N Up, K ou N K
- Déplacement d’un ou
n
caractères vers le bas :
Down, N Down, J ou N J
- Déplacement à la fin de la ligne :
$ ou bien End
- 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, tant disque 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
À partir de n’importe quel emplacement sur une ligne¶
- Déplacement à la dernière ligne du texte :
G
- Déplacement à la ligne
n
:
N G
- Déplacement à la première ligne de l’écran :
H
- Déplacement à la ligne du milieu de l’écran :
M
- Déplacement à la dernière ligne de l’écran :
L
Insérer du texte¶
Il existe plusieurs manières d'insérer du texte en mode commandes.
VI bascule en mode insertion après la saisie d’une de ces touches.
Remarque
VI passe en mode insertion. Il faudra donc appuyer sur la touche Esc pour revenir en mode commandes.
Par rapport à un caractère¶
- Insertion de texte avant un caractère :
i (insérer)
- Insertion de texte après un caractère :
a (ajouter à la fin)
Par rapport à une ligne¶
- Insertion de texte au début d’une ligne :
I
- Insertion de texte à la fin d’une ligne :
A
Par rapport au texte¶
- Insertion de texte avant une ligne :
O
- Insertion de texte après une ligne :
o
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+character
- Remplacer plus d’un caractère par d’autres :
R+characters+Esc
Remarque
La commande R bascule en mode remplacement, qui est une sorte de mode insertion.
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+Esc
Astuce
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 bien 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
Annuler une action¶
- Annuler la dernière action :
u
- Annuler les actions sur la ligne courante :
U
Annuler l’annulation¶
- Annuler une annulation
Ctrl+R
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 Enter.
Pour passer en mode Ex, du mode commandes, taper :.
Numéroter les lignes¶
- Afficher/masquer la numérotation :
:set nu
ou sa version longue :set number
:set nonu
ou sa version longue :set nonumber
Rechercher une chaîne de caractères¶
- Rechercher une chaîne de caractères à partir du curseur :
/string
- Rechercher une chaîne de caractères avant le curseur :
?string
- Aller à l’occurrence trouvée suivante :
n
- Aller à l’occurrence trouvée précédente :
N
Il existe des caractères - wildcards - 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 ou 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 …
*
: Le nombre de fois que le caractère précédent correspond, 0 fois, ou un nombre quelconque de fois.
Exemple :
/W*d
Note : Si vous voulez ignorer la casse (temporairement) lors de la correspondance des chaînes de caractères, saisir :se tic
.
Remplacer une chaîne de caractères¶
Parcourir tout un fichier pour y remplacer la chaîne recherchée par la chaîne indiquée :
:1,$ s/search/replace
Note : Vous pouvez aussi utiliser :0,$s/search/replace
pour commencer au tout début du fichier.
De la ligne n
à la ligne m
, remplacer la chaîne recherchée par la chaîne indiquée :
:n,m s/search/replace
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/search/replace/g
Parcourir tout un fichier pour y remplacer la chaîne recherchée par la chaîne indiquée :
:% s/search/replace
Supprime la ligne spécifiée¶
- Supprime une ligne vide
:g/^$/d
- Supprime les lignes n à m
:n,md
- Supprimer la ligne sur laquelle la chaîne est présente
:g/string/d
- Supprimer une ligne qui ne contient pas une chaîne
:g!/string/d
- Supprime toutes les lignes qui commencent par #
:g/^#/d
Le g signifie ici global.
Opérations sur les fichiers¶
- Sauvegarder le fichier :
:w
- Sauvegarder sous un autre nom :
:w file
- Sauvegarder depuis la ligne
n
jusqu'à la lignem
dans un autre fichier :
:n,m w file
- Recharger le dernier enregistrement du fichier :
e!
- Coller le contenu d’un autre fichier après le curseur :
:r file
- 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/rockstar/file
Il est aussi possible de saisir les commandes Ex dans un fichier nommé .exrc
mis dans le répertoire de connexion de l’utilisateur. The commands will be read and applied at each VI or VIM startup.
La commande vimtutor
¶
Il existe un tutoriel pour apprendre à utiliser VI. Il est accessible avec la commande vimtutor
.
vimtutor