Vous passez du temps dans le terminal et vous voulez un éditeur rapide, extensible et disponible partout ? Vim (Vi IMproved) transforme l’éditeur vi minimaliste en un environnement de travail complet : coloration syntaxique, annulations illimitées, splits multi-fichiers, macros et un écosystème de plus de 19 000 plugins. Ce guide vous accompagne pas à pas, de la découverte de Vim jusqu’à un environnement productif avec explorateur de fichiers, intégration Git, recherche fuzzy et thème visuel soigné.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Comprendre ce que Vim ajoute à vi et pourquoi ça change tout
- Éditer du texte efficacement grâce au “langage” de Vim (opérateurs + motions)
- Sélectionner visuellement du texte avec le mode visuel
- Rechercher et remplacer dans un fichier ou plusieurs fichiers
- Travailler avec plusieurs fichiers côte à côte (splits, buffers, onglets)
- Automatiser les tâches répétitives grâce aux macros
- Personnaliser entièrement Vim avec un fichier
.vimrccommenté - Installer 12 plugins qui transforment Vim en véritable IDE
Ce que Vim apporte par rapport à vi
Section intitulée « Ce que Vim apporte par rapport à vi »Vim est né en 1991, créé par Bram Moolenaar pour combler les frustrations des utilisateurs de vi. Le nom signifie littéralement Vi IMproved. Concrètement, si vous avez déjà pesté contre vi parce qu’il ne permettait qu’une seule annulation ou qu’il n’affichait aucune couleur, Vim résout exactement ces problèmes.
| Fonctionnalité | vi | Vim |
|---|---|---|
| Annulations | Une seule (u) | Illimitées (u / Ctrl+r) |
| Coloration syntaxique | Non | Oui — le code est coloré automatiquement |
| Mode visuel | Non | Oui — sélectionner du texte comme dans un éditeur graphique |
| Splits / onglets | Non | Oui — plusieurs fichiers côte à côte |
| Plugins | Non | Plus de 19 000 extensions disponibles |
| Historique temporel | Non | Revenir à l’état du fichier “il y a 10 secondes” |
| Aide intégrée | Limitée | Documentation complète accessible avec :help |
| Complétion | Non | Complétion automatique avec Ctrl+n |
| Persistent undo | Non | L’historique d’annulation survit au redémarrage |
Pour résumer : vi est un éditeur d’urgence, toujours disponible. Vim est l’éditeur que vous choisirez volontairement une fois que vous aurez goûté à sa puissance.
Comprendre le “langage” de Vim
Section intitulée « Comprendre le “langage” de Vim »Avant de plonger dans les commandes, prenons un moment pour comprendre comment Vim pense. C’est la clé pour ne plus apprendre des raccourcis par cœur, mais composer ses propres commandes naturellement.
Vim fonctionne comme un langage avec :
- des verbes (les opérateurs) : ce que vous voulez faire
- des compléments (les motions) : sur quoi vous voulez le faire
Exactement comme en français : “Supprimer le mot” se traduit en Vim par
dw — d pour “delete” (supprimer) et w pour “word” (mot).
Les verbes (opérateurs)
Section intitulée « Les verbes (opérateurs) »Voici les quatre opérateurs que vous utiliserez 90 % du temps :
| Opérateur | Verbe | Ce qu’il fait |
|---|---|---|
d | delete | Supprime le texte visé |
c | change | Supprime le texte visé et passe en mode insertion pour le remplacer |
y | yank | Copie le texte visé dans le presse-papier Vim |
> | indent | Décale le texte vers la droite |
Les compléments (motions)
Section intitulée « Les compléments (motions) »Les motions indiquent la portée de l’action :
| Motion | Complément | Ce qu’elle couvre |
|---|---|---|
w | word | Jusqu’au prochain mot |
$ | fin de ligne | Jusqu’au bout de la ligne |
0 | début de ligne | Jusqu’au début de la ligne |
gg | début du fichier | Jusqu’à la première ligne |
G | fin du fichier | Jusqu’à la dernière ligne |
{ / } | paragraphe | Jusqu’au paragraphe précédent / suivant |
% | correspondance | Jusqu’à la parenthèse/accolade correspondante |
f{c} | find | Jusqu’au caractère {c} sur la ligne courante |
Combiner verbes et compléments
Section intitulée « Combiner verbes et compléments »La magie de Vim, c’est que tout se compose. Quelques exemples concrets :
| Commande | Lecture | Résultat |
|---|---|---|
dw | delete word | Supprime du curseur jusqu’au prochain mot |
d$ | delete jusqu’en fin de ligne | Supprime tout jusqu’au bout de la ligne |
y3j | yank 3 lignes vers le bas | Copie la ligne courante et les 3 suivantes |
cw | change word | Supprime le mot et passe en insertion pour le remplacer |
>} | indenter jusqu’au prochain paragraphe | Décale tout le paragraphe vers la droite |
Imaginez que vous éditez un fichier de configuration et que vous devez supprimer
tout le reste d’une ligne après le signe =. Placez votre curseur sur le =
et tapez d$ : tout ce qui suit est supprimé. Pas besoin de sélectionner à la
souris, pas besoin de Shift+End puis Suppr.
Les text objects : agir sur des “blocs logiques”
Section intitulée « Les text objects : agir sur des “blocs logiques” »Les text objects sont la fonctionnalité qui rend Vim vraiment unique. Au lieu de viser un emplacement avec une motion, vous visez une structure logique du texte : un mot, le contenu entre guillemets, un bloc entre accolades, etc.
La syntaxe est : opérateur + i ou a + délimiteur.
isignifie inner (à l’intérieur, sans les délimiteurs)asignifie around (autour, délimiteurs inclus)
Prenons un exemple concret. Vous avez cette ligne dans un script Python :
message = "Bonjour le monde"Votre curseur est quelque part entre les guillemets. Voici ce que font différentes combinaisons :
| Commande | Ce qui se passe | Résultat |
|---|---|---|
ci" | Change inner ” — supprime le texte entre guillemets et passe en insertion | message = "" (curseur entre les guillemets, prêt à taper) |
di" | Delete inner ” — supprime le texte entre guillemets | message = "" |
da" | Delete around ” — supprime le texte ET les guillemets | message = |
yi" | Yank inner ” — copie le texte entre guillemets | Bonjour le monde dans le presse-papier |
Les délimiteurs disponibles sont nombreux :
| Délimiteur | Ce qu’il vise |
|---|---|
", ', ` | Contenu entre guillemets |
( ou ) | Contenu entre parenthèses |
{ ou } | Contenu entre accolades |
[ ou ] | Contenu entre crochets |
t | Contenu entre balises HTML (<p>...</p>) |
w | Le mot sous le curseur |
p | Le paragraphe courant |
Imaginez que vous devez modifier un paramètre dans un fichier JSON :
{ "port": "8080", "host": "localhost" }Placez votre curseur n’importe où sur 8080, tapez ci", puis le nouveau
port 3000, puis Esc. Le port est modifié sans avoir touché les guillemets.
Cette commande fonctionne quelle que soit la position du curseur entre les
délimiteurs — pas besoin de se placer au début.
Répéter et annuler
Section intitulée « Répéter et annuler »Deux commandes à retenir absolument :
.(point) : répète la dernière modification. C’est probablement la commande la plus puissante de Vim. Si vous venez de faireciwpour changer un mot en “serveur”, vous pouvez ensuite aller sur un autre mot et taper.pour le remplacer aussi par “serveur”.u: annule la dernière modification. Vous pouvez appuyer plusieurs fois pour remonter dans l’historique.Ctrl+r: refait l’action annulée (l’inverse deu).:earlier 10s/:later 3m: revient littéralement à l’état du fichier tel qu’il était il y a 10 secondes, ou avance de 3 minutes dans l’historique. C’est comme un “time machine” pour vos fichiers.
Le mode visuel : sélectionner avant d’agir
Section intitulée « Le mode visuel : sélectionner avant d’agir »Dans vi, toutes les actions se font “à l’aveugle” — vous tapez une commande et le texte change. Le mode visuel de Vim ajoute une étape intermédiaire : vous sélectionnez d’abord le texte (il apparaît en surbrillance), puis vous choisissez quoi en faire. C’est rassurant quand on débute.
Trois façons de sélectionner
Section intitulée « Trois façons de sélectionner »| Raccourci | Type de sélection | Quand l’utiliser |
|---|---|---|
v | Caractère par caractère | Sélectionner un bout de texte précis dans une ligne |
V (majuscule) | Ligne entière | Sélectionner un bloc de lignes complet |
Ctrl+v | Colonne (bloc rectangulaire) | Modifier la même colonne sur plusieurs lignes |
Une fois la sélection active, déplacez-vous avec les touches habituelles
(hjkl, w, }, etc.) pour étendre la zone sélectionnée. Le texte
sélectionné apparaît en surbrillance.
Que faire avec la sélection ?
Section intitulée « Que faire avec la sélection ? »Une fois le texte sélectionné, appuyez sur une touche d’action :
y: copier la sélectiond: couper (supprimer) la sélectionc: remplacer — supprime la sélection et passe en mode insertion>: indenter la sélection (décaler vers la droite)<: désindenter la sélection (décaler vers la gauche)Esc: annuler la sélection et revenir en mode normal
Exemple pas à pas : commenter un bloc de code
Section intitulée « Exemple pas à pas : commenter un bloc de code »Situation : vous avez un script Python et vous voulez commenter 5 lignes
d’un coup en ajoutant # au début de chacune.
-
Placez votre curseur sur la première ligne à commenter.
-
Appuyez sur
Ctrl+vpour entrer en mode bloc visuel. Vous voyez-- VISUAL BLOCK --en bas de l’écran. -
Descendez avec
4jpour étendre la sélection sur 5 lignes au total (la ligne courante + 4 en dessous). Vous voyez un curseur en colonne sur les 5 lignes. -
Appuyez sur
I(majuscule, attention pasiminuscule). Vim passe en mode insertion au début de la première ligne. -
Tapez
#(dièse + espace). -
Appuyez sur
Esc. Vim applique automatiquement le texte que vous venez de taper au début de chacune des 5 lignes. Toutes les lignes sont maintenant commentées.
Pour décommenter, refaites Ctrl+v, sélectionnez les # sur les
5 lignes (avec 4j puis l pour inclure l’espace), et appuyez sur d.
Rechercher et remplacer
Section intitulée « Rechercher et remplacer »Quand vous travaillez sur un fichier de configuration de 200 lignes, retrouver un paramètre ou renommer une variable partout dans le fichier sans risque d’erreur, c’est indispensable. Vim excelle dans ce domaine.
Rechercher un mot
Section intitulée « Rechercher un mot »Depuis le mode normal, tapez / suivi du mot recherché, puis Entrée.
Vim saute directement à la première occurrence et la surligne.
| Commande | Ce qu’elle fait |
|---|---|
/nginx | Cherche “nginx” vers le bas du fichier |
?nginx | Cherche “nginx” vers le haut |
n | Saute à l’occurrence suivante |
N | Saute à l’occurrence précédente |
* | Cherche le mot sous le curseur (vers le bas) — très pratique |
# | Cherche le mot sous le curseur (vers le haut) |
Par exemple, si vous éditez un fichier de configuration Nginx et que vous
cherchez où est défini le port d’écoute, tapez /listen puis appuyez sur
n pour naviguer entre les différentes occurrences.
Rechercher et remplacer (substitution)
Section intitulée « Rechercher et remplacer (substitution) »La commande :s permet de remplacer du texte. Sa syntaxe suit le même principe
que la commande sed :
:[portée]s/ancien/nouveau/[drapeaux]Voici les combinaisons les plus courantes, de la plus simple à la plus complète :
| Commande | Ce qu’elle fait |
|---|---|
:s/foo/bar/ | Remplace le premier “foo” sur la ligne courante |
:s/foo/bar/g | Remplace tous les “foo” sur la ligne courante |
:%s/foo/bar/g | Remplace tous les “foo” dans tout le fichier |
:%s/foo/bar/gc | Idem, mais demande confirmation pour chaque occurrence |
:5,20s/foo/bar/g | Remplace uniquement entre les lignes 5 et 20 |
Exemple concret : renommer une fonction
Section intitulée « Exemple concret : renommer une fonction »Vous avez un fichier Python de 35 lignes où la fonction calculer_somme
apparaît 4 fois (la définition + 3 appels). Vous voulez la renommer en
calculer_total :
:%s/calculer_somme/calculer_total/gVim confirme le résultat :
4 substitutions on 4 linesLes 4 occurrences sont remplacées d’un coup. Si vous voulez vérifier chaque
remplacement avant de l’appliquer, ajoutez le drapeau c :
:%s/calculer_somme/calculer_total/gcVim surligne chaque occurrence et vous demande y (oui), n (non), a
(toutes), q (quitter) ou l (remplacer celle-ci et quitter).
Rechercher dans plusieurs fichiers
Section intitulée « Rechercher dans plusieurs fichiers »Si votre recherche doit couvrir tout un projet (tous les fichiers .py
dans un dossier et ses sous-dossiers) :
:vimgrep /calculer_somme/ **/*.pyVim ouvre une quickfix list (liste de résultats) que vous pouvez parcourir :
:copen: affiche la liste des résultats dans une fenêtre:cn: saute au résultat suivant:cp: saute au résultat précédent
Travailler avec plusieurs fichiers
Section intitulée « Travailler avec plusieurs fichiers »En tant que sysadmin ou développeur, vous éditez rarement un seul fichier. Vous devez souvent comparer deux configurations, consulter un fichier pendant que vous en modifiez un autre, ou naviguer rapidement entre plusieurs scripts. Vim gère ça avec trois mécanismes : les buffers, les splits et les onglets.
Buffers : garder plusieurs fichiers en mémoire
Section intitulée « Buffers : garder plusieurs fichiers en mémoire »Quand vous ouvrez un fichier avec :e, Vim le charge dans un buffer (une
zone mémoire). Pensez aux buffers comme aux onglets cachés d’un navigateur :
les fichiers sont ouverts, mais vous n’en voyez qu’un à la fois.
| Commande | Ce qu’elle fait |
|---|---|
:e fichier | Ouvre un fichier dans un nouveau buffer |
:ls | Liste tous les buffers (fichiers) ouverts |
:b2 | Bascule vers le buffer n°2 |
:bn | Passe au buffer suivant (next) |
:bp | Passe au buffer précédent (previous) |
:bd | Ferme le buffer courant (sans quitter Vim) |
Splits : afficher plusieurs fichiers côte à côte
Section intitulée « Splits : afficher plusieurs fichiers côte à côte »Les splits divisent votre écran pour afficher plusieurs fichiers simultanément. C’est comme avoir deux feuilles de papier ouvertes l’une à côté de l’autre sur votre bureau.
| Commande | Ce qu’elle fait |
|---|---|
:vsp fichier | Ouvre un fichier dans un split vertical (côte à côte) |
:sp fichier | Ouvre un fichier dans un split horizontal (l’un au-dessus de l’autre) |
Pour naviguer entre les fenêtres, la combinaison est toujours la même :
Ctrl+w suivi de la direction :
| Raccourci | Navigation |
|---|---|
Ctrl+w h | Aller à la fenêtre de gauche |
Ctrl+w l | Aller à la fenêtre de droite |
Ctrl+w j | Aller à la fenêtre du bas |
Ctrl+w k | Aller à la fenêtre du haut |
Ctrl+w = | Égaliser la taille de toutes les fenêtres |
Ctrl+w c | Fermer la fenêtre courante |
Ctrl+w o | Garder uniquement la fenêtre courante (fermer toutes les autres) |
Voici un exemple avec trois fichiers ouverts — un script Python, un fichier YAML et un script Bash, tous visibles en même temps :

Ce type de disposition est très pratique pour comparer deux fichiers de configuration ou éditer du code en consultant la documentation.
Onglets : séparer des contextes de travail
Section intitulée « Onglets : séparer des contextes de travail »Les onglets regroupent des ensembles de splits. Si les splits sont les fenêtres de votre bureau, les onglets sont des bureaux virtuels différents. Utile pour séparer des contextes : un onglet pour le code, un pour les configurations, un pour les logs.
| Commande | Ce qu’elle fait |
|---|---|
:tabnew fichier | Ouvre un fichier dans un nouvel onglet |
gt | Passe à l’onglet suivant |
gT | Passe à l’onglet précédent |
:tabs | Liste tous les onglets ouverts |
:tabclose | Ferme l’onglet courant |
Automatiser avec les macros
Section intitulée « Automatiser avec les macros »Imaginons que vous ayez un fichier CSV de 100 lignes et que vous deviez reformater chaque ligne de la même manière — ajouter un préfixe, supprimer une colonne, modifier un séparateur. Le faire à la main ligne par ligne prendrait des heures. Les macros de Vim permettent d’enregistrer une séquence d’actions et de la rejouer autant de fois que nécessaire.
Enregistrer et rejouer une macro
Section intitulée « Enregistrer et rejouer une macro »Une macro se stocke dans un registre (une mémoire identifiée par une lettre). Voici le processus complet :
-
Démarrer l’enregistrement : appuyez sur
qsuivi d’une lettre pour choisir le registre. Par exemple,qaenregistre dans le registrea. Vous voyezrecording @as’afficher en bas de l’écran. -
Effectuer les actions : tout ce que vous tapez (déplacements, modifications, insertions) est enregistré. Travaillez sur une seule ligne comme modèle.
-
Arrêter l’enregistrement : appuyez sur
q. Le messagerecordingdisparaît. -
Rejouer la macro : tapez
@apour exécuter la macro du registrea. Tapez@@pour rejouer la dernière macro utilisée.
Exemple pas à pas : ajouter un commentaire à des lignes
Section intitulée « Exemple pas à pas : ajouter un commentaire à des lignes »Situation : vous avez un fichier de configuration et vous voulez commenter les
lignes 4 à 8 en ajoutant # au début de chacune.
La méthode la plus directe (sans macro) :
:4,8normal I#Cette commande dit à Vim : “sur les lignes 4 à 8, exécute la commande normale
I# ” (insérer # en début de ligne). Le mot-clé normal indique que les
touches qui suivent doivent être interprétées comme en mode normal.
Appliquer une action sur toutes les lignes correspondant à un motif
Section intitulée « Appliquer une action sur toutes les lignes correspondant à un motif »Vous voulez commenter toutes les lignes qui contiennent le mot debug :
:g/debug/normal I#La commande :g/pattern/ (pour global) sélectionne toutes les lignes
correspondant au motif, puis applique l’action qui suit. C’est
extraordinairement puissant : vous pouvez par exemple supprimer toutes les
lignes vides avec :g/^$/d.
Répéter une macro N fois
Section intitulée « Répéter une macro N fois »Pour exécuter la macro a dix fois de suite :
10@aC’est ici que les macros deviennent redoutables : vous faites le travail une fois à la main, puis Vim le reproduit 10, 100 ou 1000 fois.
Sauvegarder une macro dans .vimrc
Section intitulée « Sauvegarder une macro dans .vimrc »Les macros sont perdues quand vous fermez Vim. Pour en conserver une, ajoutez-la
à votre fichier .vimrc :
let @a='I# \<Esc>j'Cette ligne pré-remplit le registre a avec la macro “insérer # en début de
ligne, revenir en mode normal, descendre d’une ligne”.
Personnaliser Vim avec .vimrc
Section intitulée « Personnaliser Vim avec .vimrc »Le fichier ~/.vimrc est le cœur de votre configuration Vim. Il est lu à
chaque lancement de Vim. Chaque ligne de ce fichier correspond à une commande
que vous pourriez taper manuellement dans Vim, mais qui sera appliquée
automatiquement.
Pensez au .vimrc comme au fichier .bashrc de votre shell : c’est ici que
vous définissez les réglages qui correspondent à votre façon de travailler.
Commencer simplement
Section intitulée « Commencer simplement »Si vous n’avez jamais eu de .vimrc, commencez par créer un fichier minimal
et ajoutez des options au fur et à mesure de vos besoins. Voici un point de
départ solide avec des explications pour chaque ligne :
" === Apparence ===set number " Affiche les numéros de ligne à gaucheset relativenumber " Numéros relatifs : montre la distance par rapport " à la ligne courante (utile pour sauter avec 5j, 12k)set cursorline " Surligne la ligne où se trouve le curseurset showmatch " Quand vous tapez ), surligne brièvement le ( correspondantset laststatus=2 " Affiche toujours la barre de statut en bas
" === Indentation ===set tabstop=4 " Une tabulation vaut 4 espaces à l'écranset shiftwidth=4 " L'indentation automatique décale de 4 espacesset expandtab " Quand vous appuyez sur Tab, insère des espaces (pas \t)set autoindent " Conserve l'indentation de la ligne précédenteset smartindent " Ajoute un niveau d'indentation après { ou if
" === Recherche ===set incsearch " Résultats en temps réel pendant la saisie de /motifset hlsearch " Surligne toutes les occurrences trouvéesset ignorecase " Recherche insensible à la casse (majuscules/minuscules)set smartcase " SAUF si vous tapez une majuscule dans la recherche
" === Confort ===set encoding=utf-8 " Encodage UTF-8 (accents, emojis...)set scrolloff=8 " Garde toujours 8 lignes au-dessus et en-dessous du curseurset wildmenu " Quand vous tapez :e <Tab>, affiche un menu de complétionset mouse=a " Permet d'utiliser la souris (clic, scroll, sélection)Activer le persistent undo
Section intitulée « Activer le persistent undo »Par défaut, quand vous fermez un fichier et le rouvrez, tout l’historique d’annulation est perdu. Le persistent undo sauvegarde cet historique sur disque, ce qui vous permet d’annuler des modifications même après avoir fermé et rouvert le fichier.
" === Persistent undo ===set undofile " Active la sauvegarde de l'historique sur disqueset undodir=~/.vim/undodir " Dossier où stocker les fichiers d'historiqueLa touche Leader : créer vos propres raccourcis
Section intitulée « La touche Leader : créer vos propres raccourcis »La touche Leader est un préfixe que vous choisissez pour créer des raccourcis personnalisés qui ne gênent aucune commande Vim existante. Par convention, la touche Espace est idéale car elle est facilement accessible et inutilisée en mode normal.
" === Touche Leader ===let mapleader = " " " Définit la touche Espace comme Leader
" Raccourcis personnalisésnnoremap <leader>w :w<CR> " Espace+w → sauvegarder le fichiernnoremap <leader>q :q<CR> " Espace+q → quitternnoremap <leader>h :nohlsearch<CR> " Espace+h → enlever le surlignage de rechercheLe raccourci Espace h est très pratique au quotidien : après une recherche
avec /, toutes les occurrences restent surlignées en jaune. C’est utile, mais
au bout d’un moment, c’est gênant. Espace h enlève le surlignage sans perdre
la recherche — vous pouvez toujours naviguer avec n et N.
Adapter l’indentation selon le type de fichier
Section intitulée « Adapter l’indentation selon le type de fichier »Un fichier Python utilise 4 espaces d’indentation, mais un fichier YAML en utilise 2. Vim peut ajuster automatiquement son comportement :
filetype plugin indent on " Active la détection du type de fichier
autocmd FileType python set tabstop=4 shiftwidth=4 expandtabautocmd FileType yaml set tabstop=2 shiftwidth=2 expandtabautocmd FileType json set tabstop=2 shiftwidth=2 expandtabautocmd FileType sh set tabstop=2 shiftwidth=2 expandtabLe mot-clé autocmd signifie “quand Vim détecte que le fichier est de type
Python, applique ces réglages”.
Appliquer les changements sans redémarrer
Section intitulée « Appliquer les changements sans redémarrer »Après avoir modifié votre .vimrc, inutile de fermer et rouvrir Vim :
:source ~/.vimrcCette commande relit le fichier de configuration et applique les changements immédiatement.
Installer des plugins avec vim-plug
Section intitulée « Installer des plugins avec vim-plug »Jusqu’ici, vous avez un Vim bien configuré mais “nu” — il ne fait que ce que Vim sait faire nativement. Les plugins ajoutent des fonctionnalités que Vim n’a pas d’origine : un explorateur de fichiers en arborescence, une intégration Git, une recherche ultra-rapide, un thème de couleurs moderne, etc.
Pour gérer ces plugins, vous avez besoin d’un gestionnaire de plugins. vim-plug est le plus populaire avec plus de 35 000 étoiles sur GitHub : il télécharge, installe et met à jour vos plugins en une commande.
Installer vim-plug
Section intitulée « Installer vim-plug »La commande suivante télécharge vim-plug et le place dans le bon dossier. Vous n’avez à le faire qu’une seule fois :
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vimDéclarer les plugins dans .vimrc
Section intitulée « Déclarer les plugins dans .vimrc »Ajoutez cette section à votre ~/.vimrc. Chaque ligne Plug correspond à un
plugin à installer. Le nom entre guillemets est le dépôt GitHub du plugin
(auteur/nom) :
" === Plugins (vim-plug) ===call plug#begin('~/.vim/plugged')
" Navigation et fichiersPlug 'preservim/nerdtree' " Explorateur de fichiers en arborescencePlug 'junegunn/fzf', { 'do': { -> fzf#install() } } " Recherche fuzzyPlug 'junegunn/fzf.vim' " Commandes fzf pour Vim
" ÉditionPlug 'tpope/vim-commentary' " Commenter/décommenter avec gccPlug 'tpope/vim-surround' " Changer les guillemets/parenthèsesPlug 'tpope/vim-repeat' " Répéter les commandes de plugins avec .Plug 'jiangmiao/auto-pairs' " Ferme automatiquement (, [, {, "...
" GitPlug 'tpope/vim-fugitive' " Commandes Git depuis VimPlug 'airblade/vim-gitgutter' " Marqueurs +/~/- dans la gouttière
" ApparencePlug 'morhetz/gruvbox' " Thème de couleurs agréablePlug 'itchyny/lightline.vim' " Barre de statut coloréePlug 'yggdroot/indentline' " Guides d'indentation visuels
call plug#end()Installer les plugins
Section intitulée « Installer les plugins »Sauvegardez le .vimrc, relancez Vim, puis tapez :
:PlugInstallvim-plug télécharge et installe chaque plugin en parallèle. La fenêtre affiche la progression et un message “Done!” une fois terminé :

Gérer les plugins au quotidien
Section intitulée « Gérer les plugins au quotidien »| Commande | Ce qu’elle fait |
|---|---|
:PlugInstall | Installe les nouveaux plugins ajoutés au .vimrc |
:PlugUpdate | Met à jour tous les plugins déjà installés |
:PlugClean | Supprime les plugins dont la ligne Plug a été retirée du .vimrc |
:PlugStatus | Affiche l’état de chaque plugin |
Pour supprimer un plugin : supprimez sa ligne Plug dans le .vimrc,
puis lancez :PlugClean.
Les plugins essentiels en détail
Section intitulée « Les plugins essentiels en détail »Les 12 plugins déclarés plus haut couvrent les besoins les plus courants. Voici ce que chacun apporte concrètement, avec les commandes à connaître.
Gruvbox : un thème de couleurs lisible
Section intitulée « Gruvbox : un thème de couleurs lisible »Quel problème ça résout : par défaut, le thème de Vim est assez austère et peu contrasté. Gruvbox offre une palette de couleurs chaudes et équilibrées, agréable pour de longues sessions d’édition. Les mots-clés, chaînes de caractères, commentaires et fonctions ont chacun une couleur distincte, ce qui facilite la lecture du code.
Ajoutez ces lignes à votre .vimrc après le bloc plug#end() :
" === Thème Gruvbox ===set background=dark " Version fond sombre (il existe aussi 'light')colorscheme gruvbox " Active le thèmeset noshowmode " Cache le mode (-- INSERT --) car lightline l'affiche
NERDTree : naviguer dans vos fichiers
Section intitulée « NERDTree : naviguer dans vos fichiers »Quel problème ça résout : sans plugin, pour ouvrir un fichier vous devez
taper son chemin complet avec :e /chemin/vers/fichier. NERDTree affiche une
arborescence sur le côté gauche de l’écran, comme l’explorateur de fichiers
dans VS Code. Vous naviguez dans les dossiers et ouvrez les fichiers d’un
appui sur Entrée.
Ajoutez cette ligne à votre .vimrc pour créer un raccourci d’ouverture :
" === NERDTree ===nnoremap <leader>n :NERDTreeToggle<CR> " Espace+n ouvre/ferme l'arborescenceAppuyez sur Espace n pour afficher ou masquer l’explorateur :

Une fois dans NERDTree, voici les touches utiles :
| Touche | Ce qu’elle fait dans NERDTree |
|---|---|
o ou Entrée | Ouvrir le fichier ou développer le dossier |
s | Ouvrir le fichier dans un split vertical (à côté) |
i | Ouvrir dans un split horizontal (au-dessus/en-dessous) |
t | Ouvrir dans un nouvel onglet |
R | Rafraîchir l’arborescence |
m | Ouvrir le menu (créer, renommer, supprimer un fichier) |
I | Afficher/masquer les fichiers cachés (ceux qui commencent par .) |
q | Fermer NERDTree |
fzf.vim : chercher des fichiers instantanément
Section intitulée « fzf.vim : chercher des fichiers instantanément »Quel problème ça résout : sur un projet avec des centaines de fichiers,
retrouver le bon fichier en tapant son chemin complet est fastidieux. fzf
(fuzzy finder) vous permet de taper quelques lettres — même approximatives — et
il retrouve le fichier pour vous. Par exemple, taper “ngxcf” retrouvera
nginx.conf.
Ajoutez ces raccourcis à votre .vimrc :
" === fzf ===nnoremap <leader>f :Files<CR> " Espace+f → chercher un fichier par nomnnoremap <leader>b :Buffers<CR> " Espace+b → naviguer dans les fichiers ouvertsnnoremap <leader>r :Rg<CR> " Espace+r → chercher du texte dans tout le projet
La commande :Rg (Ripgrep) cherche du contenu dans les fichiers — comme
un grep ultra-rapide intégré à Vim.
vim-fugitive : utiliser Git sans quitter Vim
Section intitulée « vim-fugitive : utiliser Git sans quitter Vim »Quel problème ça résout : normalement, pour faire un git status, vous
devez quitter Vim (ou ouvrir un autre terminal), taper la commande, puis
revenir. vim-fugitive intègre Git directement dans Vim — vous restez dans
votre éditeur tout le temps.
| Commande | Équivalent shell | Ce qu’elle fait |
|---|---|---|
:Git ou :G | git status | Affiche un résumé interactif des changements |
:Git diff | git diff | Compare les modifications avec le dernier commit |
:Git blame | git blame | Montre qui a modifié chaque ligne et quand |
:Git log | git log | Historique des commits |
:Gwrite | git add fichier | Ajoute le fichier courant au prochain commit |
:Gread | git checkout fichier | Annule les modifications (revient au dernier commit) |
vim-gitgutter : voir les modifications dans la gouttière
Section intitulée « vim-gitgutter : voir les modifications dans la gouttière »Quel problème ça résout : quand vous modifiez un fichier versionné avec Git, il est difficile de savoir exactement quelles lignes ont changé. vim-gitgutter affiche des marqueurs colorés dans la gouttière (la colonne fine à gauche des numéros de ligne) :

| Marqueur | Couleur | Signification |
|---|---|---|
+ | Vert | Ligne ajoutée (n’existait pas dans le dernier commit) |
~ | Jaune | Ligne modifiée (différente du dernier commit) |
- | Rouge | Ligne supprimée (existait dans le dernier commit) |
Pour naviguer rapidement entre les modifications :
| Raccourci | Ce qu’il fait |
|---|---|
]c | Saute à la prochaine modification |
[c | Saute à la modification précédente |
<leader>hp | Prévisualise le changement (montre l’ancien contenu) |
<leader>hu | Annule la modification (remet l’ancien contenu) |
vim-surround : manipuler les guillemets et parenthèses
Section intitulée « vim-surround : manipuler les guillemets et parenthèses »Quel problème ça résout : changer des guillemets simples en doubles, ou entourer un mot de parenthèses, demande normalement plusieurs étapes (aller au début, supprimer le guillemet, en retaper un, aller à la fin, idem). vim-surround fait ça en une seule commande.
Voici les situations les plus courantes avec un exemple avant/après :
| Situation | Commande | Avant | Après |
|---|---|---|---|
| Changer les guillemets | cs"' | "hello" | 'hello' |
| Transformer en balise HTML | cs'<p> | 'hello' | <p>hello</p> |
| Supprimer les guillemets | ds" | "hello" | hello |
| Ajouter des guillemets autour d’un mot | ysiw" | hello | "hello" |
| Entourer toute la ligne de parenthèses | yss( | hello world | ( hello world ) |
La syntaxe suit toujours le même principe : action + s + ancien + nouveau.
cs"' = change surround " par '.
vim-commentary : commenter en une touche
Section intitulée « vim-commentary : commenter en une touche »Quel problème ça résout : commenter du code (ajouter # en Python,
// en JavaScript, " en vimscript) nécessite de connaître le bon caractère
pour chaque langage et de le taper manuellement. vim-commentary détecte
automatiquement le langage et utilise le bon caractère.
| Commande | Ce qu’elle fait |
|---|---|
gcc | Commenter/décommenter la ligne courante (bascule) |
gcap | Commenter tout le paragraphe |
gc3j | Commenter la ligne courante et les 3 suivantes |
sélection visuelle + gc | Commenter toute la sélection |
C’est l’un des plugins les plus utiles au quotidien. Un simple gcc et la
ligne est commentée. Refaites gcc et elle est décommentée.
lightline.vim : une barre de statut informative
Section intitulée « lightline.vim : une barre de statut informative »Quel problème ça résout : la barre de statut par défaut de Vim est peu lisible et ne montre pas grand-chose. lightline la remplace par une barre colorée qui affiche le mode actuel (NORMAL, INSERT, VISUAL…), le nom du fichier, l’encodage et la position dans le fichier.
" === Lightline ===let g:lightline = { 'colorscheme': 'gruvbox' }Avec cette ligne, la barre de statut adopte les couleurs du thème Gruvbox pour un rendu cohérent.
auto-pairs : fermeture automatique des délimiteurs
Section intitulée « auto-pairs : fermeture automatique des délimiteurs »Quel problème ça résout : quand vous tapez une parenthèse ouvrante (,
vous devez vous rappeler de taper la fermante ) plus tard. auto-pairs
l’ajoute automatiquement et place le curseur entre les deux. Fonctionne
aussi avec [, {, ", ' et `. Si vous n’aimez pas ce comportement
dans un cas précis, appuyez sur Ctrl+v avant le caractère pour empêcher la
fermeture automatique.
indentLine : visualiser les niveaux d’indentation
Section intitulée « indentLine : visualiser les niveaux d’indentation »Quel problème ça résout : dans les fichiers YAML ou Python, l’indentation est significative — un espace de trop ou de moins change le sens du fichier. indentLine affiche des lignes verticales fines à chaque niveau d’indentation pour vous aider à aligner correctement votre code.
.vimrc complet récapitulatif
Section intitulée « .vimrc complet récapitulatif »Voici la configuration complète qui regroupe tous les réglages et plugins présentés dans ce guide. Les deux onglets vous permettent de voir la configuration et les commandes d’installation.
" ============================================" .vimrc — Configuration Vim complète" ============================================
" === Apparence ===set numberset relativenumberset cursorlineset showmatchset laststatus=2set noshowmode
" === Indentation ===set tabstop=4set shiftwidth=4set expandtabset autoindentset smartindentfiletype plugin indent on
" === Recherche ===set incsearchset hlsearchset ignorecaseset smartcase
" === Comportement ===set encoding=utf-8set scrolloff=8set wildmenuset mouse=aset clipboard=unnamedplus
" === Persistent undo ===set undofileset undodir=~/.vim/undodir
" === Touche Leader ===let mapleader = " "nnoremap <leader>w :w<CR>nnoremap <leader>q :q<CR>nnoremap <leader>h :nohlsearch<CR>
" === Plugins (vim-plug) ===call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'Plug 'tpope/vim-commentary'Plug 'itchyny/lightline.vim'Plug 'tpope/vim-fugitive'Plug 'airblade/vim-gitgutter'Plug 'tpope/vim-surround'Plug 'tpope/vim-repeat'Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }Plug 'junegunn/fzf.vim'Plug 'jiangmiao/auto-pairs'Plug 'morhetz/gruvbox'Plug 'yggdroot/indentline'
call plug#end()
" === Thème ===set background=darkcolorscheme gruvbox
" === NERDTree ===nnoremap <leader>n :NERDTreeToggle<CR>
" === fzf ===nnoremap <leader>f :Files<CR>nnoremap <leader>b :Buffers<CR>nnoremap <leader>r :Rg<CR>
" === Lightline ===let g:lightline = { 'colorscheme': 'gruvbox' }
" === Configuration par type de fichier ===autocmd FileType python set tabstop=4 shiftwidth=4 expandtabautocmd FileType yaml set tabstop=2 shiftwidth=2 expandtabautocmd FileType json set tabstop=2 shiftwidth=2 expandtabautocmd FileType sh set tabstop=2 shiftwidth=2 expandtabCopiez-collez ces commandes dans votre terminal pour tout installer d’un coup :
# 1. Installer vim-plug (gestionnaire de plugins)curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
# 2. Créer le dossier pour le persistent undomkdir -p ~/.vim/undodir
# 3. Copier le .vimrc (ou créer ~/.vimrc avec le contenu ci-contre)
# 4. Installer tous les plugins automatiquementvim -es -u ~/.vimrc -c 'PlugInstall --sync' -c 'qa'
# 5. Installer ripgrep pour la recherche fzf :Rg (optionnel)sudo apt install ripgrep # Ubuntu/DebianUtiliser l’aide intégrée
Section intitulée « Utiliser l’aide intégrée »Vim possède l’une des documentations intégrées les plus complètes de tous les éditeurs — des milliers de pages, couvrant chaque commande, option et concept. Plutôt que de chercher sur internet, prenez le réflexe de consulter l’aide directement dans Vim.
| Commande | Ce qu’elle affiche |
|---|---|
:help | La page d’accueil de l’aide |
:help motion | Tout sur les motions |
:help text-objects | Tout sur les text objects |
:help :substitute | Question sur la substitution ? |
:help vim-plug | Documentation du plugin (si installé) |
:helpgrep pattern | Cherche “pattern” dans toute la documentation |
Pour naviguer dans l’aide :
Ctrl+]: suit un lien (les mots en couleur sont des liens)Ctrl+o: revient en arrière:q: ferme l’aide
Récapitulatif des raccourcis Leader
Section intitulée « Récapitulatif des raccourcis Leader »Une fois votre .vimrc en place avec les plugins, voici tous les raccourcis
personnalisés disponibles avec la touche Leader (Espace) :
| Raccourci | Action |
|---|---|
Espace w | Sauvegarder |
Espace q | Quitter |
Espace h | Enlever le surlignage de recherche |
Espace n | Ouvrir/fermer NERDTree |
Espace f | Recherche fuzzy de fichiers |
Espace b | Naviguer dans les buffers |
Espace r | Recherche de texte dans le projet |
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
| Pas de coloration syntaxique | syntax on absent du .vimrc | Ajouter syntax on dans le .vimrc ou taper :syntax on |
| Le texte collé s’indente en escalier | L’auto-indent décale chaque ligne collée | Taper :set paste, coller, puis :set nopaste |
| Le thème Gruvbox n’apparaît pas | Plugin non installé | Lancer :PlugInstall dans Vim, puis relancer |
E492: Not an editor command: PlugInstall | vim-plug absent | Relancer la commande curl d’installation de vim-plug |
| Le copier-coller avec le système ne fonctionne pas | Vim compilé sans +clipboard | Installer vim-gtk3 : sudo apt install vim-gtk3 |
| Caractères bizarres dans le terminal | Encodage incorrect | Ajouter set encoding=utf-8 dans le .vimrc |
fzf :Rg ne trouve rien | ripgrep non installé | sudo apt install ripgrep |
| NERDTree ne s’ouvre pas | Plugin non installé | Vérifier la ligne Plug et relancer :PlugInstall |
Le raccourci Espace+quelque chose ne fait rien | Leader non défini | Vérifier que let mapleader = " " est avant les nnoremap dans le .vimrc |
E518: Unknown option: undodir | Vim trop ancien | Mettre à jour vers Vim 7.3+ : sudo apt install vim |
À retenir
Section intitulée « À retenir »- Vim fonctionne comme un langage : opérateur + motion = action (ex.
dw= supprimer un mot). Comprenez cette logique et vous n’aurez plus besoin d’apprendre des raccourcis par cœur. - Les text objects (
ci",dap,yiw) permettent d’agir sur des structures logiques du texte — c’est la fonctionnalité la plus productive de Vim. - La commande
.(point) répète la dernière action : c’est l’un des plus gros gains de temps au quotidien. - Le fichier
.vimrcse construit progressivement — commencez avec les bases et ajoutez des options quand vous en ressentez le besoin. - Les macros (
qa...qpuis@a) automatisent les tâches répétitives et peuvent s’appliquer à des plages ou des motifs. - vim-plug installe et gère des plugins en une ligne — les 12 plugins présentés couvrent 90 % des besoins courants (fichiers, Git, recherche, édition, apparence).
- Les splits (
Ctrl+w) permettent de travailler sur plusieurs fichiers côte à côte sans quitter le terminal. - L’aide intégrée (
:help sujet) est la meilleure resource — prenez le réflexe de la consulter avant de chercher en ligne.