Aller au contenu

Maîtriser l'éditeur de texte Vim

Mise à jour :

Vim (pour Vi IMproved) est la version évoluée de l’éditeur vi, pensée pour offrir une expérience beaucoup plus complète sans sacrifier la rapidité ni l’efficacité. Si vous avez déjà utilisé vi, alors vous êtes déjà familier avec sa logique de modes (commande, insertion, etc.). Vim reprend cette base… et l’étend considérablement.

Coloration syntaxique, annulations multiples, sélection visuelle, buffers, onglets, configuration via .vimrc, et même des plugins : vim transforme un simple éditeur en un véritable couteau suisse pour sysadmins, développeurs, et utilisateurs intensifs de la ligne de commande.

Mais attention : ce guide ne reprend pas les bases de vi. Si vous débutez, commencez par lire le guide sur vi pour comprendre la navigation, les modes et les commandes de base. Ici, je vais me concentrer uniquement sur les fonctionnalités spécifiques à vim et sur ce qu’elles changent au quotidien.

Premières différences entre vi et vim

Vim est né d’un besoin simple : améliorer vi sans le réinventer. Créé en 1991 par Bram Moolenaar, Vim signifie Vi IMproved. Son objectif : garder la rapidité et la sobriété de vi tout en y ajoutant les fonctionnalités qu’attendaient les utilisateurs avancés.

Voici les améliorations majeures que vous remarquez dès l’ouverture de vim :

Annulations multiples

Contrairement à vi, qui ne permet d’annuler qu’une seule action (u), vim garde un historique complet des modifications.

  • u : annule la dernière action
  • Ctrl+r : refait l’action annulée
  • :earlier 10s : remonte dans l’historique de 10 secondes
  • :later 3m : avance de 3 minutes

Coloration syntaxique

L’une des premières choses visibles : le code ou les fichiers de configuration sont colorés automatiquement si vous tapez :

:syntax on

Cela rend l’édition bien plus lisible, surtout pour des fichiers de type .sh, .conf, .json, .html, etc.

Aide contextuelle puissante

Vim intègre une documentation très complète consultable directement depuis l’éditeur :

  • :help : page d’aide générale
  • :help sujet : aide ciblée (ex : :help search)
  • K (en mode normal, sur un mot) : affiche l’aide du mot si disponible

Et plein d’autres évolutions…

  • Récupération automatique après plantage
  • Navigation dans plusieurs fichiers en parallèle (onglets, buffers, splits)
  • Configuration avancée via .vimrc
  • Extensions et plugins pour adapter vim à tous les usages

Si vi est l’éditeur de secours toujours disponible, vim devient vite l’éditeur principal une fois qu’on a goûté à sa flexibilité. La suite du guide va explorer chacune de ces fonctionnalités en détail.

Le mode visuel : sélection simple de texte

L’un des grands atouts de vim par rapport à vi, c’est l’apparition du mode visuel, absent de l’éditeur d’origine. Ce mode permet de sélectionner du texte comme on le ferait dans un éditeur moderne, pour ensuite le copier, couper ou modifier.

Entrer en mode visuel

  • v : sélectionne caractère par caractère
  • V : sélectionne ligne par ligne
  • Ctrl+v : sélection en colonne (mode bloc)

Une fois le texte sélectionné, il est mis en surbrillance.

Actions sur la sélection

Une fois en mode visuel, vous pouvez :

  • Copier avec y (yank)
  • Couper avec d (delete)
  • Remplacer avec c (change → passe en mode insertion)
  • Supprimer avec x ou Del
  • Coller après avec p ou avant avec P

Exemples concrets

  • Pour copier trois lignes :

    1. Appuyez sur V, puis descendez avec j deux fois
    2. Appuyez sur y
    3. Allez à l’endroit désiré et tapez p
  • Pour remplacer une colonne dans un tableau :

    1. Appuyez sur Ctrl+v pour activer le mode bloc
    2. Sélectionnez la colonne à modifier
    3. Tapez c pour changer son contenu

Sortir du mode visuel

Appuyez simplement sur Esc.

Ce mode rend vim bien plus intuitif pour ceux qui viennent d’un éditeur graphique. Il permet des manipulations précises et puissantes, sans perdre la vitesse du clavier.

Buffers, splits et onglets

Vim brille quand il s’agit de travailler avec plusieurs fichiers ou vues simultanément. Contrairement à vi, il gère nativement les buffers, les splits (fenêtres divisées) et les onglets, ce qui en fait un véritable éditeur multitâche en ligne de commande.

Travailler avec plusieurs fichiers (buffers)

Chaque fichier ouvert dans vim est stocké en mémoire dans un buffer. On peut passer de l’un à l’autre sans quitter vim.

  • :e fichier : ouvrir un fichier dans un nouveau buffer
  • :ls ou :buffers : liste des buffers ouverts
  • :bN (ex: :b2) : aller au buffer n°
  • :bn et :bp : aller au buffer suivant ou précédent
  • :bd : fermer un buffer (sans fermer vim)

Diviser la fenêtre (splits)

Vim permet d’afficher plusieurs fichiers en parallèle dans des volets :

  • :vsp fichier : split vertical
  • :sp fichier : split horizontal
  • Ctrl+w puis une touche (h, j, k, l) : naviguer entre les fenêtres
  • Ctrl+w c : fermer la fenêtre courante

Très pratique pour comparer deux fichiers de config ou éditer un script tout en consultant une documentation.

Utiliser des onglets (tabs)

Les onglets sont utiles pour organiser vos sessions comme dans un navigateur :

  • :tabnew fichier : ouvre un fichier dans un nouvel onglet
  • :tabn et :tabp : aller à l’onglet suivant ou précédent
  • :tabs : lister tous les onglets
  • gt / gT : raccourcis clavier pour naviguer entre les onglets
  • :tabclose : fermer l’onglet actuel

En combinant buffers, splits et onglets, vim devient un environnement de travail complet, capable de rivaliser avec n’importe quel IDE… tout en restant dans le terminal.

Rechercher et remplacer puissants

L’une des forces majeures de vim est sa puissance de recherche. Que ce soit pour trouver un mot, naviguer dans un fichier ou effectuer des remplacements globaux, vim offre une panoplie de commandes très efficaces.

Recherche simple

  • /mot : recherche vers le bas
  • ?mot : recherche vers le haut
  • n : aller à la prochaine occurrence
  • N : aller à la précédente

Exemple :

/Listen

cherche toutes les lignes contenant Listen.

Recherche de mots sous le curseur

  • * : recherche le mot sous le curseur vers le bas
  • # : vers le haut

Très utile pour analyser rapidement la réutilisation d’un mot-clé ou d’une variable.

Substitution dans une ligne

  • :s/mot/remplace/ : remplace la première occurrence sur la ligne
  • :s/mot/remplace/g : remplace toutes les occurrences sur la ligne

Substitution dans tout le fichier

  • :%s/mot/remplace/g : remplace dans tout le fichier
  • :%s/mot/remplace/gc : demande confirmation pour chaque remplacement

Rechercher dans plusieurs fichiers (vimgrep)

  • :vimgrep /pattern/ *.conf : cherche pattern dans tous les fichiers .conf
  • :copen : ouvre la liste des résultats
  • :cn, :cp : aller au résultat suivant/précédent

Ces outils rendent vim incontournable pour faire du nettoyage, corriger rapidement des erreurs, renommer des variables ou analyser des fichiers de configuration. Et tout cela, en restant dans un seul terminal.

La configuration avec .vimrc

L’un des grands avantages de vim sur vi, c’est sa capacité à être personnalisé en profondeur via un fichier de configuration : ~/.vimrc. Ce fichier est lu à chaque lancement de vim, ce qui vous permet de définir un comportement cohérent et adapté à votre usage.

Créer ou modifier le fichier .vimrc

Pour éditer votre fichier de configuration personnel :

Terminal window
vim ~/.vimrc

S’il n’existe pas, créez-le. Vous pouvez ensuite y ajouter vos préférences.

Exemple minimal de .vimrc

set number " affiche les numéros de ligne
set relativenumber " numérotation relative (utile pour naviguer)
syntax on " active la coloration syntaxique
set tabstop=4 " largeur d'une tabulation = 4 espaces
set expandtab " convertit les tabs en espaces
set autoindent " indentation automatique
set background=dark " optimise les couleurs pour fond sombre

Chaque directive set correspond à une option que vous pourriez taper manuellement avec :set, mais ici elle est chargée automatiquement à chaque lancement.

Chargement automatique selon le type de fichier

Vous pouvez définir des comportements spécifiques selon l’extension du fichier :

autocmd FileType python set tabstop=4 shiftwidth=4 expandtab
autocmd FileType yaml set tabstop=2 shiftwidth=2 expandtab

Organiser son .vimrc

  • Groupez vos réglages par thème (apparence, indentation, raccourcis…)
  • Commentez vos lignes avec " pour vous y retrouver plus facilement
  • Testez chaque ajout individuellement pour éviter les erreurs

Recharger .vimrc sans redémarrer vim

Après modification, tapez dans vim :

:source ~/.vimrc

Avec un .vimrc bien pensé, vous transformez vim en un éditeur parfaitement adapté à vos besoins, que ce soit pour éditer des fichiers de config, des scripts shell, du YAML ou du code Python.

Macros et automatisation

Vim permet d’automatiser des tâches répétitives grâce aux macros, une fonctionnalité puissante souvent méconnue. Une macro enregistre une série de commandes clavier que vous pouvez rejouer à volonté.

Enregistrer une macro

  1. Appuyez sur q suivi d’une lettre (ex : q a pour enregistrer dans le registre a)
  2. Effectuez les actions souhaitées (déplacement, suppression, insertion…)
  3. Appuyez de nouveau sur q pour arrêter l’enregistrement

Exemple :

qa " commence à enregistrer dans le registre a
dd " supprime une ligne
j " descend d'une ligne
q " stoppe l'enregistrement

Exécuter une macro

  • @a : exécute la macro enregistrée dans le registre a
  • @@ : rejoue la dernière macro utilisée

Répéter une macro plusieurs fois

  • 10@a : exécute la macro a 10 fois
  • Très utile pour traiter des blocs identiques dans un fichier de log, un CSV ou un fichier de conf.

Combiner macros et recherche

On peut enchainer les commandes :

  • Chercher un mot avec /
  • Lancer une macro sur chaque ligne trouvée
  • Utiliser :g/pattern/normal @a pour appliquer une macro à toutes les lignes contenant un motif

Astuce : sauvegarder vos macros

Les macros sont perdues à la fermeture de vim. Pour les conserver :

  • Convertissez la macro en commande texte
  • Ajoutez-la à votre .vimrc sous la forme :
let @a='ddj'

Les macros permettent d’automatiser des séquences longues ou ennuyeuses, tout en gardant la souplesse du clavier. Une fois maîtrisées, elles changent complètement votre façon de travailler avec vim.

Plugins avec vim-plug

L’un des plus gros atouts de vim par rapport à vi, c’est la possibilité d’ajouter des plugins pour enrichir son éditeur avec des fonctionnalités sur mesure. Pour cela, l’un des gestionnaires les plus simples et populaires est vim-plug.

Installer vim-plug

Dans votre terminal, tapez :

Terminal window
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Cela télécharge le script plug.vim dans le bon dossier.

Ajouter des plugins dans .vimrc

Dans votre ~/.vimrc, encadrez vos plugins par call plug#begin() et call plug#end() :

call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree' " explorateur de fichiers
Plug 'tpope/vim-commentary' " commentaires rapides
Plug 'itchyny/lightline.vim' " barre de statut légère
call plug#end()

Installer les plugins

Dans vim, tapez :

:PlugInstall

Vim télécharge et installe tous les plugins listés dans le fichier .vimrc.

Mettre à jour les plugins

:PlugUpdate

Supprimer un plugin

  1. Supprimez la ligne du Plug correspondant dans .vimrc

  2. Tapez dans vim :

    :PlugClean

Où trouver des plugins ?

Avec vim-plug, installer un plugin devient aussi simple que d’ajouter une ligne dans un fichier texte. Vous pouvez ainsi créer un environnement sur mesure, sans jamais quitter le terminal.

Explorateur de fichiers intégré

Vim intègre un explorateur de fichiers natif appelé netrw, qui permet de naviguer dans vos répertoires sans quitter l’éditeur. Vous pouvez aussi le remplacer par des plugins comme NERDTree ou vifm pour plus de confort.

Utiliser netrw

Pour lancer l’explorateur de fichiers dans vim :

  • :Ex ou :Explore : ouvre le répertoire courant
  • :Sex : ouvre l’explorateur en split horizontal
  • :Vex : ouvre en split vertical

Une fois dans netrw, vous pouvez :

  • Naviguer avec les flèches ou hjkl
  • Ouvrir un fichier ou répertoire avec Entrée
  • Supprimer un fichier avec D
  • Renommer avec R
  • Copier avec %
  • Créer un nouveau fichier avec mf

Ouvrir automatiquement un répertoire

Lancer vim sur un dossier :

Terminal window
vim .

ouvre netrw directement dans ce répertoire.

Remplacer netrw par NERDTree

Pour une interface plus claire et ergonomique, installez le plugin NERDTree via vim-plug :

Plug 'preservim/nerdtree'

Puis, dans vim :

  • :NERDTree : ouvre l’arborescence
  • :NERDTreeToggle : affiche ou masque la vue

Alternative : vifm

vifm est une alternative puissante à NERDTree, plus proche d’un mc (Midnight Commander) mais intégré à l’univers vim.

Que ce soit avec netrw, NERDTree ou un autre plugin, l’exploration de fichiers dans vim devient fluide et pratique. Idéal pour éditer rapidement plusieurs fichiers dans un projet ou gérer des configs système.

Conclusion

Avec vim, vous avez entre les mains un éditeur à la fois puissant, extensible et parfaitement adapté à un usage en terminal. Il va bien au-delà de vi, avec sa gestion des fichiers multiples, ses macros, ses plugins et sa personnalisation fine via .vimrc. Que ce soit pour éditer des fichiers de configuration, automatiser des manipulations répétitives ou développer un projet complet, vim est un outil fiable et robuste.

Mais l’histoire ne s’arrête pas là.

Pour celles et ceux qui souhaitent aller encore plus loin, il existe une version modernisée de vim : Neovim. Plus rapide, mieux architecturée, avec un support natif du Language Server Protocol (LSP), de la configuration en Lua, et une intégration facilitée avec les outils modernes du développement et de l’administration système.