Vous éditez régulièrement des fichiers de configuration sur des serveurs Linux — /etc/ssh/sshd_config, /etc/fstab, /etc/nginx/nginx.conf — et vous voulez gagner en vitesse et en précision. Vim (Vi IMproved) est présent sur tous les serveurs et fait partie des compétences attendues aux certifications LFCS et RHCSA. Ce guide vous accompagne de l’ouverture d’un fichier à la substitution en masse, avec un .vimrc minimal adapté à l’administration. Les fonctionnalités avancées (splits, macros, plugins) sont traitées dans le guide Vim avancé.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Comprendre les 3 modes de Vim — normal, insertion, commande — et éviter les erreurs classiques
- Ouvrir, éditer, sauvegarder et quitter un fichier proprement
- Naviguer efficacement avec
hjkl, mots, lignes, début et fin de fichier - Éditer avec les opérateurs et motions (
dd,dw,yy,ciw,di") — le « langage » de Vim - Rechercher et substituer dans un fichier ou sur une plage de lignes
- Configurer un
.vimrcminimal adapté à l’administration
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »Sur un serveur Linux, vous n’avez souvent pas le choix : l’éditeur disponible via SSH, c’est Vim (ou vi qui est en réalité Vim sur la plupart des distributions modernes). Savoir l’utiliser efficacement évite les erreurs coûteuses — un fichier sshd_config mal sauvegardé peut vous verrouiller hors du serveur.
| Situation réelle | Compétence Vim utile |
|---|---|
Corriger une directive dans /etc/nginx/nginx.conf | Navigation /motif, édition ciw |
Commenter 10 lignes dans /etc/fstab pour un test | Mode visuel bloc Ctrl+v |
| Remplacer toutes les occurrences d’un port dans un fichier | :%s/8080/9090/g |
| Ajouter une option à la fin de chaque ligne de config | Substitution avec $ |
| Éditer une liste CSV copiée dans un fichier temporaire | Text objects ci", di, |
Les 3 modes de Vim
Section intitulée « Les 3 modes de Vim »La première chose qui déroute avec Vim, c’est qu’il fonctionne en modes. Dans un éditeur classique, vous tapez et le texte s’ajoute. Dans Vim, les touches ont un sens différent selon le mode actif. Comprendre cette mécanique est la clé pour ne plus être perdu.
| Mode | Comment y entrer | Ce qu’il permet |
|---|---|---|
| Normal | Esc (mode par défaut au démarrage) | Naviguer, supprimer, copier, coller, répéter |
| Insertion | i, a, o, I, A, O depuis le normal | Taper du texte comme dans un éditeur classique |
| Commande | : depuis le normal | Sauvegarder, quitter, substituer, ouvrir un autre fichier |
Entrer en mode insertion
Section intitulée « Entrer en mode insertion »Plusieurs touches font passer en insertion, chacune avec une nuance utile :
| Touche | Où insère-t-elle ? |
|---|---|
i | Avant le curseur |
a | Après le curseur |
I | Au début de la ligne courante |
A | À la fin de la ligne courante |
o | Sur une nouvelle ligne en dessous |
O | Sur une nouvelle ligne au-dessus |
Le bon choix fait gagner du temps. Si vous voulez ajouter quelque chose à la fin d’une ligne, inutile d’aller jusqu’au bout avec les flèches puis de taper a — A vous y place directement en mode insertion.
Ouvrir, sauvegarder, quitter
Section intitulée « Ouvrir, sauvegarder, quitter »C’est la première chose à maîtriser : ne pas perdre son travail et ne pas rester bloqué dans l’éditeur.
| Commande | Ce qu’elle fait |
|---|---|
vim fichier | Ouvre (ou crée) le fichier |
:w | Sauvegarde (write) |
:q | Quitte — refuse si des modifications sont non sauvegardées |
:wq ou ZZ | Sauvegarde et quitte |
:q! | Quitte sans sauvegarder (abandonne les modifications) |
:w fichier | Sauvegarde sous un autre nom |
:e fichier | Ouvre un autre fichier dans la session courante |
Naviguer dans un fichier
Section intitulée « Naviguer dans un fichier »En mode normal, les touches deviennent des commandes de déplacement. Oubliez les flèches du clavier : hjkl sont plus rapides car vos mains restent sur la rangée de repos.
| Raccourci | Déplacement |
|---|---|
h / j / k / l | Gauche / Bas / Haut / Droite |
w | Début du mot suivant |
b | Début du mot précédent |
e | Fin du mot courant |
0 | Début de la ligne |
^ | Premier caractère non blanc de la ligne |
$ | Fin de la ligne |
gg | Première ligne du fichier |
G | Dernière ligne du fichier |
25G ou :25 | Aller à la ligne 25 |
Ctrl+d / Ctrl+u | Demi-page vers le bas / le haut |
% | Parenthèse/accolade correspondante |
Éditer : opérateurs et motions
Section intitulée « Éditer : opérateurs et motions »Vim fonctionne comme un langage avec des verbes (opérateurs) et des compléments (motions). Comprendre cette logique évite de mémoriser des dizaines de raccourcis séparés.
Les verbes (opérateurs)
Section intitulée « Les verbes (opérateurs) »| Opérateur | Verbe | Ce qu’il fait |
|---|---|---|
d | delete | Supprime |
c | change | Supprime et passe en insertion |
y | yank | Copie dans le presse-papier Vim |
> / < | indent | Décale à droite / à gauche |
Combiner verbe et motion
Section intitulée « Combiner verbe et motion »La magie de Vim : tout se compose. Quelques exemples utiles au quotidien :
| Commande | Lecture | Résultat |
|---|---|---|
dw | delete word | Supprime jusqu’au prochain mot |
d$ | delete jusqu’en fin de ligne | Supprime tout jusqu’au bout |
dd | delete line | Supprime la ligne entière |
5dd | delete 5 lines | Supprime 5 lignes |
yy | yank line | Copie la ligne |
cw | change word | Supprime le mot et passe en insertion |
c$ | change jusqu’en fin de ligne | Remplace la fin de la ligne |
Copier, coller, annuler
Section intitulée « Copier, coller, annuler »| Commande | Ce qu’elle fait |
|---|---|
yy | Copier la ligne courante |
p | Coller après le curseur (ou après la ligne) |
P | Coller avant le curseur |
x | Supprimer le caractère sous le curseur |
r{c} | Remplacer le caractère par {c} sans entrer en insertion |
u | Annuler la dernière modification |
Ctrl+r | Rétablir (l’inverse de u) |
. | Répéter la dernière modification |
Les text objects : agir sur des structures logiques
Section intitulée « Les text objects : agir sur des structures logiques »Les text objects rendent Vim particulièrement puissant sur les fichiers de configuration. Au lieu de viser une position, vous visez une structure : le contenu entre guillemets, entre parenthèses, un mot entier.
Syntaxe : opérateur + i ou a + délimiteur.
i= inner (contenu sans les délimiteurs)a= around (contenu + délimiteurs)
Prenons une ligne /etc/nginx/nginx.conf :
listen 80 default_server;Curseur sur 80, vous tapez :
| Commande | Résultat |
|---|---|
ciw | Supprime 80 et passe en insertion — tapez 443, Esc → listen 443 default_server; |
daw | Supprime 80 (mot + espace) |
C (majuscule) | Supprime de la position jusqu’à la fin de ligne et passe en insertion |
Pour un fichier JSON { "port": "8080", "host": "localhost" }, curseur sur 8080 :
| Commande | Résultat |
|---|---|
ci" | Remplace le contenu entre guillemets ("8080" → "" + insertion) |
di" | Supprime uniquement 8080 |
da" | Supprime "8080" (guillemets inclus) |
Délimiteurs les plus utiles :
| Délimiteur | Cible |
|---|---|
", ', ` | Contenu entre guillemets |
( ou ) | Contenu entre parenthèses |
{ ou } | Contenu entre accolades |
[ ou ] | Contenu entre crochets |
w | Le mot sous le curseur |
p | Le paragraphe courant |
Le mode visuel : sélectionner avant d’agir
Section intitulée « Le mode visuel : sélectionner avant d’agir »Le mode visuel ajoute une étape de sélection rassurante : vous voyez ce qui va être affecté avant d’agir.
| Raccourci | Type de sélection |
|---|---|
v | Caractère par caractère |
V | Ligne entière |
Ctrl+v | Bloc rectangulaire (colonnes) |
Une fois sélectionné, appuyez sur une action : y (copier), d (couper), c (remplacer), > (indenter), < (désindenter), Esc (annuler la sélection).
Exemple pratique : commenter 5 lignes de config
Section intitulée « Exemple pratique : commenter 5 lignes de config »Scénario : désactiver 5 lignes dans /etc/fstab en ajoutant # au début de chacune.
-
Placez le curseur sur la première ligne à commenter.
-
Appuyez sur
Ctrl+vpour entrer en mode bloc visuel.-- VISUAL BLOCK --apparaît en bas. -
Descendez avec
4jpour sélectionner 5 lignes (ligne courante + 4 dessous). -
Appuyez sur
I(majuscule). Vim passe en insertion au début de la première ligne. -
Tapez
#(dièse + espace). -
Appuyez sur
Esc. Le#est appliqué automatiquement au début des 5 lignes.
Pour décommenter : Ctrl+v, sélectionnez la colonne # sur les 5 lignes avec 4j puis l, appuyez sur d.
Rechercher et substituer
Section intitulée « Rechercher et substituer »Sur un fichier de configuration de 200 lignes, retrouver un paramètre ou renommer une valeur partout sans erreur est indispensable.
Rechercher
Section intitulée « Rechercher »| Commande | Ce qu’elle fait |
|---|---|
/motif | Cherche motif vers le bas |
?motif | Cherche motif vers le haut |
n | Occurrence suivante |
N | Occurrence précédente |
* | Cherche le mot sous le curseur (vers le bas) |
# | Cherche le mot sous le curseur (vers le haut) |
Substituer
Section intitulée « Substituer »La syntaxe est proche de sed :
:[portée]s/ancien/nouveau/[drapeaux]| Commande | Ce qu’elle fait |
|---|---|
:s/foo/bar/ | Remplace la première occurrence sur la ligne courante |
:s/foo/bar/g | Remplace toutes les occurrences sur la ligne |
:%s/foo/bar/g | Remplace toutes les occurrences dans tout le fichier |
:%s/foo/bar/gc | Idem avec confirmation pour chaque occurrence |
:5,20s/foo/bar/g | Remplace entre les lignes 5 et 20 uniquement |
Exemple : renommer un port dans un fichier de configuration
Section intitulée « Exemple : renommer un port dans un fichier de configuration »Vous avez un fichier avec listen 8080 qui apparaît 4 fois. Pour tout basculer sur 9090 avec confirmation :
:%s/8080/9090/gcVim surligne chaque occurrence et vous demande y (oui), n (non), a (toutes), q (quitter), l (celle-ci et quitter).
Un .vimrc minimal pour l’administration
Section intitulée « Un .vimrc minimal pour l’administration »Le fichier ~/.vimrc est lu au lancement de Vim. Voici une configuration minimale, suffisante pour la plupart des tâches d’administration et conforme aux attendus certification :
" === Apparence ===syntax on " Coloration syntaxiqueset number " Numéros de ligneset showmatch " Surligne la parenthèse correspondante
" === Recherche ===set incsearch " Résultats en temps réelset hlsearch " Surligne toutes les occurrencesset ignorecase " Insensible à la casseset smartcase " Sauf si majuscule dans la recherche
" === Indentation ===set tabstop=4set shiftwidth=4set expandtab " Tab insère des espaces (pas \t)set autoindent " Conserve l'indentation
" === Confort ===set encoding=utf-8set scrolloff=8 " Garde 8 lignes visibles autour du curseurCréez (ou complétez) ~/.vimrc :
vim ~/.vimrcAprès modification, appliquez sans relancer :
:source ~/.vimrcAide intégrée
Section intitulée « Aide intégrée »Vim possède une documentation intégrée très complète. Prenez le réflexe de la consulter directement.
| Commande | Ce qu’elle affiche |
|---|---|
:help | 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 |
:helpgrep motif | Cherche dans toute la documentation |
Dans l’aide : Ctrl+] suit un lien, Ctrl+o revient en arrière, :q ferme.
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
| Caractères étranges à la frappe | Vous avez quitté l’insertion sans le savoir | Esc puis i pour reprendre |
E45: 'readonly' option is set à :w | Fichier système ouvert sans sudo | :w !sudo tee % puis :q! |
| Le texte collé s’indente en escalier | Auto-indent applique sur chaque ligne collée | :set paste, coller, :set nopaste |
| Pas de coloration syntaxique | syntax on absent du .vimrc | Ajouter syntax on |
| Copier-coller système inopérant | Vim sans +clipboard | sudo apt install vim-gtk3 sur Debian/Ubuntu |
| Caractères bizarres dans le terminal | Encodage incorrect | set encoding=utf-8 dans .vimrc |
| « Tout l’écran est sélectionné » | Vous êtes en mode visuel | Esc |
| Vim refuse de quitter | Modifications non sauvegardées | :w pour sauvegarder ou :q! pour abandonner |
À retenir
Section intitulée « À retenir »- Vim a 3 modes — normal, insertion, commande. En cas de doute,
Escvous ramène toujours en mode normal. - Les opérateurs + motions forment un langage :
d+w= delete word. Comprenez la logique, vous n’aurez plus à mémoriser chaque raccourci isolément. - Les text objects (
ciw,ci",di() sont les plus utiles sur les fichiers de configuration — ils agissent sur des structures logiques. - La commande
.répète la dernière modification : combinée ànaprès une recherche, elle permet de corriger sélectivement chaque occurrence. - Pour substituer partout :
:%s/ancien/nouveau/gc— ajoutez toujours le%pour tout le fichier et lecpour confirmer avant chaque remplacement risqué. - Pour éditer un fichier système, ouvrez avec
sudo vim. Si oublié ::w !sudo tee %sauve la mise. - Un
.vimrcminimal (numéros de ligne, coloration, indentation, recherche) suffit pour l’administration — la configuration complète avec plugins et macros relève du guide Vim avancé. - Pratiquez avec
vimtutor: 30 minutes qui paient sur les épreuves LFCS et RHCSA chronométrées.