Aller au contenu

É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, 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 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 : puis saisir :

  • q pour sortir sans sauvegarder (quit) ;
  • w pour enregistrer son travail (write) ;
  • wq (write quit) ou x (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 ECHAP.

À 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 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 nh

  • Déplacement d’un ou n caractères vers la droite :

, n, l ou nl

  • Déplacement d’un ou n caractères vers le haut :

, n, k ou nk

  • Déplacement d’un ou n caractères vers le bas :

, n, j ou nj

  • Déplacement à la fin de la ligne :

$ ou 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, 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 nw

  • Déplacement d’un ou n mots vers la gauche :

b ou nb

À partir de n’importe quel emplacement sur une ligne

  • Déplacement à la dernière ligne du texte :

G

  • Déplacement à la ligne n :

nG

  • 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.

Remarque

VI passe en mode insertion. Il faudra donc appuyer sur la touche 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 nx

  • Remplacer un caractère par un autre :

rcaractère

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

RcaractèresESC

Remarque

La commande R bascule en mode remplacement, qui est une sorte de mode insertion.

Mots

  • Supprimer (couper) un ou n mots :

dw ou ndw

  • Copier un ou n mots :

yw ou nyw

  • Coller un mot une ou n fois après le curseur :

p ou np

  • Coller un mot une ou n fois avant le curseur :

P ou nP

  • Remplacer un mot :

cwwordESC

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 :

dd ou ndd

  • Copier une ou n lignes :

yy ou nyy

  • Coller ce qui a été copié ou supprimé une ou n fois après la ligne courante :

p ou np

  • Coller ce qui a été copié ou supprimé une ou n fois avant la ligne courante :

P ou nP

  • Supprimer (couper) du début de la ligne jusqu’au curseur :

d0

  • Supprimer (couper) du curseur jusqu’à la fin de la ligne :

d$

  • Copier du début de la ligne jusqu’au curseur :

y0

  • Copier du curseur jusqu’à la fin de la ligne :

y$

  • Supprimer (couper) le texte à partir de la ligne courante :

dL ou dG

  • Copier le texte à partir de la ligne courante :

yL ou yG

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 ENTREE.

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

Numéroter les lignes

  • Afficher/masquer la numérotation :

:set nu et sa version longue :set number

:set nonu et 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 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 :

/[Ww]ord : search word or Word

/[1-9]word : search 1word, 2wordxword where x is a number

  • ^ : 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 :

/W.rd : search Word, Ward

  • * : Le nombre de fois que le caractère précédent correspond, 0 fois, ou un nombre quelconque de fois.

Exemple :

/M*t

Note: Si vous voulez ignorer la casse (temporairement) lors de la correspondance des chaînes de caractères, saisir :set ic.

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

Note: Vous pouvez aussi utiliser :0,$s/recherche/remplace 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 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

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/chaine/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 ligne m 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. À 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