Aller au contenu

Maîtriser Vi en un clin d'œil

Mise à jour :

vi est un éditeur de texte minimaliste intégré à presque tous les systèmes Unix et Linux. Il peut paraître austère au premier abord, mais il devient vite un allié précieux une fois maîtrisé. Pourquoi ? Parce qu’il est toujours disponible, même sur les systèmes les plus dépouillés, sans interface graphique ni éditeurs modernes.

Apprendre à utiliser vi, c’est gagner en autonomie et en réactivité en situation critique. Pas besoin d’en faire votre éditeur principal, mais savoir l’utiliser peut littéralement vous sauver la mise.

Les deux modes principaux de vi

L’une des premières choses qui surprennent avec vi, c’est son fonctionnement en modes. Contrairement aux éditeurs classiques où l’on tape directement du texte, vi sépare les actions en trois modes principaux :

  • Mode commande : pour naviguer et manipuler le texte
  • Mode insertion : pour écrire du texte
  • Mode Ex : pour exécuter des commandes

Ces deux modes permettent de travailler efficacement sans avoir à continuellement changer de contexte.

Mode commande

C’est le mode par défaut quand on ouvre vi. Ici, chaque touche est interprétée comme une instruction : déplacer le curseur, supprimer un mot, copier une ligne, etc.

Par exemple :

  • dd supprime une ligne entière
  • x efface un caractère
  • u annule la dernière action

Astuce : Si vous ne savez plus dans quel mode vous êtes, appuyez sur Esc. Cela vous ramène toujours en mode commande.

Mode insertion

Pour écrire du texte, il faut passer en mode insertion. Plusieurs commandes permettent de le faire, selon où vous voulez commencer à écrire :

  • i : insère du texte avant le curseur
  • a : insère après le curseur
  • o : ouvre une nouvelle ligne en dessous
  • O : ouvre une nouvelle ligne au-dessus

Une fois dans ce mode, vous tapez normalement. Pour revenir au mode commande : appuyez sur la touche Esc.

Et le mode Ex ?

Il existe un troisième mode, plus discret : le mode Ex, activé en tapant : en mode commande. Il sert à exécuter des commandes longues, comme enregistrer le fichier (:w), quitter (:q), ou chercher/remplacer (:s).

Avec vi, il faut oublier la souris : tout se fait au clavier. Et c’est une bonne chose ! Une fois les commandes en tête, on gagne en vitesse et en précision. Voici comment se déplacer efficacement dans un fichier.

Déplacements de base

  • h : gauche (←)
  • l : droite (→)
  • j : ligne suivante (↓)
  • k : ligne précédente (↑)

Ces touches peuvent sembler étranges au début, mais elles tombent naturellement sous les doigts avec un peu de pratique. Les touches fléchées sont aussi disponibles, mais elles sont moins efficaces.

Aller au début ou à la fin d’une ligne

  • 0 (zéro) : aller au début de la ligne
  • ^ : au premier caractère non vide
  • $ : à la fin de la ligne

Se déplacer par mots

  • w : mot suivant (début)
  • e : fin du mot actuel
  • b : mot précédent (début)

Ajouter une majuscule (W, E, B) permet de naviguer par mots séparés par des espaces, utiles dans du texte ou des scripts shell.

Aller à une ligne précise

  • :42 : aller à la ligne 42
  • gg : aller en haut du fichier
  • G : aller à la dernière ligne

Sauts rapides

  • H : aller en haut de l’écran visible
  • M : aller au milieu de l’écran
  • L : aller en bas de l’écran

Utiliser les marques

Vous pouvez placer un repère dans le fichier avec m suivi d’une lettre, par exemple ma. Pour y revenir plus tard, tapez 'a.

Édition de texte

Dans vi, éditer un fichier ne se fait pas comme dans un éditeur graphique. Ici, chaque action est déclenchée par une commande clavier. Une fois ces commandes apprises, vous gagnerez en rapidité et en efficacité.

Insérer du texte

Pour ajouter du contenu, il faut passer en mode insertion :

  • i : insérer avant le curseur
  • I : insérer au début de la ligne
  • a : insérer après le curseur
  • A : insérer à la fin de la ligne
  • o : insérer une nouvelle ligne en dessous
  • O : insérer une nouvelle ligne au-dessus

Après avoir tapé votre texte, appuyez sur Esc pour revenir au mode commande.

Supprimer du texte

Voici quelques commandes très utiles pour supprimer rapidement :

  • x : supprime le caractère sous le curseur
  • X : supprime le caractère avant le curseur
  • dw : supprime un mot
  • dd : supprime une ligne entière
  • d$ : supprime jusqu’à la fin de la ligne
  • d0 : supprime jusqu’au début de la ligne

Modifier et remplacer

  • r : remplace un seul caractère
  • R : entre en mode remplacement (vous écrivez par-dessus le texte existant)
  • cw : change un mot (équivaut à supprimer + insérer)
  • cc : change toute la ligne

Annuler et répéter

  • u : annule la dernière action
  • U : annule toutes les modifications sur la ligne en cours
  • . : répète la dernière commande

Copier, couper, coller

Dans vi, les opérations de copie, coupe et collage reposent sur le principe des registres. On parle ici de “yanker” (copier), “delete” (couper) et “put” (coller). Ces actions se combinent très bien avec les mouvements appris précédemment.

Copier (Yank)

  • yy : copie (yank) une ligne entière
  • yw : copie un mot
  • y$ : copie depuis le curseur jusqu’à la fin de la ligne
  • y0 : copie depuis le curseur jusqu’au début de la ligne

On peut aussi copier plusieurs lignes avec un nombre :

Terminal window
5yy

Copie 5 lignes à partir de la ligne actuelle.

Couper (Delete)

Les commandes de suppression (comme dd ou dw) ne suppriment pas seulement : elles enregistrent le contenu supprimé dans un registre temporaire, qu’on peut ensuite coller.

  • dd : coupe une ligne
  • d3w : coupe trois mots
  • d} : coupe jusqu’au prochain paragraphe

Coller (Put)

  • p : colle après le curseur ou la ligne
  • P : colle avant

Exemple :

Terminal window
dd
P

Coupe la ligne actuelle et la colle au-dessus de l’endroit actuel.

Utiliser les registres

Chaque suppression ou copie est stockée dans un registre par défaut, mais il est aussi possible de nommer un registre :

Terminal window
"ayy # copie la ligne dans le registre a
"ap # colle depuis le registre a

C’est pratique pour manipuler plusieurs morceaux de texte en parallèle.

Recherche et substitution

Travailler dans vi avec de longs fichiers, c’est souvent chercher une ligne précise, une configuration, ou une valeur à modifier. Heureusement, vi dispose de puissantes commandes de recherche et de remplacement, accessibles depuis le mode commande ou le mode Ex (:).

Rechercher un mot ou une expression

  • /mot : cherche le mot vers le bas du fichier
  • ?mot : cherche le mot vers le haut

Exemples :

Terminal window
/Listen

cherche toutes les occurrences de “Listen”.

  • n : aller à l’occurrence suivante
  • N : aller à l’occurrence précédente

Très utile pour naviguer rapidement entre les occurrences d’un mot comme Port, PermitRootLogin, etc.

Recherche avec des expressions régulières

vi supporte des motifs simples :

  • . : n’importe quel caractère
  • * : zéro ou plusieurs occurrences
  • ^ : début de ligne
  • $ : fin de ligne

Exemple :

Terminal window
/^#/

trouve les lignes qui commencent par un commentaire.

Remplacer du texte

La commande de base :

Terminal window
:s/ancien/nouveau/

remplace la première occurrence sur la ligne actuelle.

Pour remplacer toutes les occurrences sur la ligne :

Terminal window
:s/ancien/nouveau/g

Pour remplacer dans tout le fichier :

Terminal window
:%s/ancien/nouveau/g

Ajouter c à la fin demande confirmation à chaque remplacement :

Terminal window
:%s/ancien/nouveau/gc

Sauvegarde et sortie de vi

Quand on débute avec vi, une des premières frustrations, c’est souvent : “Comment je sors d’ici ?”. Voici les commandes à connaître pour sauvegarder votre travail ou quitter l’éditeur, avec ou sans enregistrement.

Toutes ces commandes s’exécutent depuis le mode commande (appuyez sur Esc avant si besoin), puis tapez : pour entrer en mode Ex.

Sauvegarder le fichier

  • :w : écrit (write) le fichier, sans quitter.
  • :w nom_fichier : enregistre sous un nouveau nom.

Exemple :

Terminal window
:w /etc/mon_backup.conf

Quitter vi

  • :q : quitte (quit), mais uniquement si aucun changement n’a été fait.
  • :q! : quitte sans enregistrer les modifications.

Sauvegarder et quitter

  • :wq : sauvegarde et quitte
  • :x : équivalent de :wq, un peu plus “moderne”
  • ZZ (en majuscules, sans :) : enregistre et quitte aussi

Fermer tous les fichiers (si plusieurs buffers)

  • :qa : quitte tous les fichiers ouverts
  • :qa! : quitte tous les fichiers sans sauvegarder

Apprendre vi avec une démonstration

Je vous propose une démonstration animée (voir le GIF), nous allons illustrer le processus de création, édition et sauvegarde d’un fichier texte simple avec l’éditeur vi. C’est une séquence idéale pour les débutants qui veulent comprendre le fonctionnement de vi.

Objectif

Créer un fichier demo.txt contenant du texte, et le sauvegarder correctement en utilisant les trois modes fondamentaux de vi :

  • Mode commande (par défaut)
  • Mode insertion (édition du contenu)
  • Mode Ex (pour les commandes comme :wq)

GIF de démonstration

Étapes détaillées de la démonstration

  1. Lancement de vi

    Terminal window
    vi demo.txt

    Cette commande ouvre (ou crée s’il n’existe pas) le fichier demo.txt dans l’éditeur vi.

  2. Passage en mode insertion

    Terminal window
    i

    En tapant i, on passe du mode commande au mode insertion, ce qui permet d’écrire du texte librement.

  3. Écriture de contenu

    Hello, world!

    Une ligne de commentaire est ajoutée, puis le texte réel est saisi. C’est l’essence de la modification de fichier avec vi.

  4. Retour en mode commande

    [Esc]

    En appuyant sur Esc, on quitte le mode insertion pour revenir au mode commande. C’est essentiel avant d’exécuter une commande d’enregistrement.

  5. Passage au mode Ex et sauvegarde

    Terminal window
    :wq

    : ouvre le mode Ex, w enregistre (write), q quitte (quit). La combinaison :wq est la manière classique de sauvegarder et sortir de vi.

Ce que vous avez appris grâce à cette démonstration

  • Lancer vi sur un nouveau fichier
  • Passer entre les différents modes (commande, insertion, Ex)
  • Éditer du texte simplement
  • Enregistrer et quitter correctement
  • Vérifier le contenu du fichier avec une commande shell

Cette démonstration montre le cycle complet de travail avec vi. Une fois cette séquence maîtrisée, vous êtes capable d’éditer n’importe quel fichier de configuration sur un système Linux minimal.

Les premières commandes essentielles à retenir

Lors de la démo, on a utilisé plusieurs commandes parmi les plus importantes de vi. Voici celles que vos devez retenir pour débuter :

  • Mode insertion (pour écrire) :

  • i : insérer avant le curseur

  • a : insérer après le curseur

  • o : nouvelle ligne en dessous

  • O : nouvelle ligne au-dessus

  • yy : copier une ligne

  • yw : copier un mot

  • p : coller après le curseur

  • P : coller avant le curseur

  • dd : supprimer une ligne

  • dw : supprimer un mot

  • u : annuler la dernière action

  • r : remplacer un caractère

  • R : remplacer plusieurs caractères

  • Pour sortir du mode insertion : appuyer sur Esc

  • Mode Ex (pour sauvegarder/quitter) :

  • :w : enregistrer

  • :q : quitter

  • :wq ou :x : enregistrer et quitter

  • :q! : quitter sans enregistrer

🧠 Conseil : Mémorisez juste ces 15 commandes et vous serez déjà capable d’éditer n’importe quel fichier texte en urgence !

Personnalisation minimale de vi

vi est un éditeur minimaliste : pas de menu, pas d’interface graphique… mais quelques réglages simples peuvent le rendre plus agréable à utiliser. Même si vi n’offre pas autant de possibilités que ses clones modernes, il reste possible d’ajuster son comportement.

Modifier des options en session

Vous pouvez utiliser la commande :set pour activer ou désactiver certaines options temporairement, le temps que vi reste ouvert.

Voici quelques options utiles :

  • :set number : affiche les numéros de ligne
  • :set nonumber : les désactive
  • :set ignorecase : rend les recherches insensibles à la casse
  • :set noignorecase : remet la recherche sensible à la casse
  • :set autoindent : active l’indentation automatique
  • :set tabstop=4 : définit la largeur des tabulations

Exemple :

Terminal window
:set number autoindent tabstop=2

Voir les options actuelles

Tapez :set sans argument pour afficher les réglages actifs.

Limites de personnalisation

vi n’utilise pas de fichier de configuration comme .vimrc (qui est propre à vim). Les options que vous changez ne sont pas conservées entre les sessions. Il n’est donc pas possible de personnaliser vi de manière permanente, sauf en utilisant un clone comme vim (ce qu’on abordera dans le chapitre suivant).

Limitations de vi et versions améliorées

vi est solide, rapide, toujours présent… mais il a aussi ses limites. Conçu à l’origine dans les années 70, il ne répond plus toujours aux besoins modernes des développeurs ou administrateurs.

Ce que vi ne permet pas

  • Pas de coloration syntaxique
  • Pas d’annulation multiple
  • Pas d’édition multi-fichier intuitive
  • Pas de complétion de commande
  • Pas de support direct des plugins ou extensions
  • Personnalisation très limitée, pas de fichier de configuration

Dans les environnements modernes, ces fonctionnalités sont souvent indispensables.

Les principales versions améliorées

Heureusement, plusieurs éditeurs ont repris la base de vi pour l’enrichir. Voici les plus connus :

  • vim (Vi IMproved) : le plus populaire, avec des milliers de plugins, une configuration avancée via .vimrc, et une communauté très active.
  • nvi : une version plus fidèle à l’original mais avec quelques améliorations internes.
  • elvis : supporte la navigation en fenêtres et la coloration syntaxique.
  • neovim : un fork moderne de vim, conçu pour être plus modulaire et performant.

Comment savoir si vous utilisez vim ou vi ?

Tapez la commande suivante :

Terminal window
vi --version

Si vous voyez une mention de VIM - Vi IMproved, c’est que vous utilisez vim (souvent le cas sur les distributions Linux récentes, même avec la commande vi).

Contrôle de connaissances

Pourquoi ce contrôle ?

Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.

🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.

🎯 Pour réussir, vous devez obtenir au moins 80% de bonnes réponses.

💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.

Bonne chance ! 🚀

Conclusion

Si vous avez du mal à vous habituer à vi, ne vous découragez pas. C’est un outil puissant, mais il faut un peu de temps pour s’y habituer. La documentation officielle est très complète et vous y trouverez de nombreux exemples.

Si vous cherchez un éditeur puissant pour automatiser vos tâches, coder ou gérer plusieurs fichiers avec confort, alors passer à vim ou neovim est une évolution naturelle. Mais savoir utiliser vi, c’est s’assurer de toujours avoir un outil fiable sous la main, partout.