Éditeur de texte VI

Objectifs

Utiliser les principales commandes de l’éditeur VI ;
Modifier un texte grâce à l’éditeur 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.

Syntaxe de la commande vi
vi [-c commande] [fichier]

Exemple :

$ vi /home/stagiaire/fichier
Table 1. Option de la commande vi
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.

Syntaxe de la commande vim
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) ou x (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.

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 kbd:[ENTREE].

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]

À 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

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)

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][caractère]

  • Remplacer plus d’un caractère par d’autres :

[R][caractères][ECHAP]

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][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]

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 kbd:[ENTREE].

Pour passer en mode Ex, du mode commandes, taper [:].

Numéroter les lignes

  • Afficher/masquer la numérotation :

:set nu

:set nonu

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`motx 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 ligne m 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.

La commande vimtutor

Il existe un tutoriel pour apprendre à utiliser VI. Il est accessible avec la commande vimtutor.

$ vimtutor