L’éditeur texte vi

1. Le fonctionnement de vi (source Wikipédia)

Lorsque l’on débute avec vi, il est primordial de comprendre que vi possède plusieurs modes de fonctionnement. Les deux principaux modes sont le mode commande (dans lequel vi démarre) et le mode insertion. La commande i du mode commande permet de passer en mode insertion, tandis que la touche Echap permet de passer du mode insertion au mode commande.
vi est un éditeur modal, c’est-à-dire que la signification des boutons et des touches changent selon le mode dans lequel il se trouve.

En mode insertion, le texte tapé est inséré dans le document. Appuyer sur la touche Echap depuis le mode insertion permet de passer dans le mode commande, dans lequel les touches correspondent à des déplacement du curseur ou à des fonctions d’édition. Par exemple, j descend le curseur d’une ligne, x efface le caractère sous le curseur (la position « sous le curseur » peut désigner la droite du curseur si ce dernier se place entre les caractères, au dessus du caractère de soulignement ou sous le bloc rectangulaire, selon la manière dont le terminal représente le curseur).

Les touches tapées en mode commande ne sont pas insérées dans le texte, ce qui est une cause fréquente de confusion pour les utilisateurs débutants avec vi.

En mode commande, de nombreuses opérations peuvent être effectuées en série avec des séquences de touches simples, sans qu’il soit nécessaire de maintenir les touches Alt ou Ctrl enfoncées. Les opérations les plus élaborées sont composées d’opérations plus primaires. Par exemple, d3w efface trois mots (d pour delete (effacer) et w pour word (mot), c2fa change (change) le texte jusqu’à ce qu’il trouve (find) le second (2) a. Pour les utilisateurs expérimentés, cela permet de travailler très efficacement. Cela permet également à l’utilisateur de conserver en permanence ses mains sur le clavier.

2. Les commandes principales de vi (source linux-france)

Ouvrir un fichier au lancement de vi :
vi fichier

Sauvegarde d’un fichier / Sortie de vi

  • :w * Sauvegarde le fichier
  • :wq * Sauvegarde le fichier et quitte vi
  • :q * Quitte vi sans sauver les modifications
  • :e! * Ignore les changements et recharge le fichier
  • :q! * Force vi à se terminer
  • :w fichier * Sauvegarde le fichier sous le nom "fichier"
  • :w! fichier * Remplace le fichier "fichier"

    Déplacements dans vi

  • [CTRL]f * Descend d’un écran
  • [CTRL]b * Remonte d’un écran
  • [CTRL]d * Descent d’1/2 écran
  • [CTRL]u * Remonte d’1/2 écran
  • :xxx * Va à la ligne xxx

    Réactualisation de l’écran

  • [CTRL]l * Réactualise l’écran
  • %[RET] * Réactualise l’écran en plaçant le curseur en haut de l’écran
  • %. * Réactualise l’écran en plaçant le curseur au milieu de l’écran
  • %- * Réactualise l’écran en plaçant le curseur en bas de l’écran

    Positionnement du curseur

  • H * En haut de l’écran
  • M * Au milieu de l’écran
  • L * En bas de l’écran
  • h * Décale d’un caractère à gauche
  • j * Descend d’une ligne
  • k * Monte d’une ligne
  • l * Décale d’un caractère à droite
  • O * Au début de la ligne
  • $ * À la fin de la ligne
  • w * Au début du mot suivant
  • e * À la fin du mot suivant
    b Recule d’un mot

    Insertion d’un texte

  • i * Active le mode insertion
  • a * Active le mode insertion mais un caractère après le curseur
  • I * Insère au début de la ligne
  • A * Insère à la fin de la ligne
  • O * Insère une ligne en dessus du curseur et passe en mode insertion
  • o * Insère une ligne en dessous du curseur et passe en mode insertion
  • [ESC] * Termine le mode insertion

    Insertion et remplacement d’un texte

  • r Remplace le caractère à la position du curseur par *
  • R * Remplace tous les caractères jusqu’à la fin de la ligne ([ESC] pour terminer)
  • cw * Remplace uniquement le mot à la position du curseur ([ESC] pour terminer)
  • cnw * Remplace n mots ([ESC] pour terminer)
  • C * Change le reste de la ligne ([ESC] pour terminer)

    Suppression d’un texte

  • x * Supprime un caractère
  • dw * Supprime un mot
  • dnw * Supprime n mots
  • dd * Supprime une ligne
  • ndd * Supprime n lignes

    Copier/Coller

  • Y * Copie une ligne
  • nY * Copie n lignes
  • P * Colle les lignes avant le curseur
  • p * Colle les lignes après le curseur

    Copier/Coller du texte dans un autre fichier

  • ma * Marque la position "a" dans le fichier
  • mb * Marque la position "b" dans le fichier
  • :’a,’b fichier * Copie le texte de la position "a" à la position "b" dans le fichier "fichier"
    Insertion du texte d’un autre fichier
  • :r fichier * Insère tout le contenu du fichier "fichier"

    Rechercher/Remplacer du texte

  • /chaine * Recherche le texte "chaine" vers le bas
  • ?chaine * Recherche le texte "chaine" vers le haut
  • n * Répète la dernière recherche
  • //[RET] * Idem que n
  • N * Inverse la recherche précédente
  • :g/expr1/s//expr2/g * Recherche dans tous le fichier l’expression 1 et la remplace par l’expression 2
  • :g/expr1/s//expr2/gc * Idem, mais demande une confirmation avant de remplacer
  • :x,y s/expr1/expr2/g * Recherche de la ligne x à la ligne y l’expression 1 et la remplace par l’expression 2

    Annuler/Répéter les modifications

  • u * Annule la dernière modification
  • U * Annule toutes les modifications effectuées sur la ligne courante
  • . * Répète les dernières modifications

    Voici donc un aprecu de vi et les commandes principales. C’est, selon moi, suffisant pour une utilisation classique. 🙂

Catégories Logiciels