Aller au contenu
Administration Linux medium

Vim pour l'administration (certif)

11 min de lecture

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é.

  • 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 .vimrc minimal adapté à l’administration

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éelleCompétence Vim utile
Corriger une directive dans /etc/nginx/nginx.confNavigation /motif, édition ciw
Commenter 10 lignes dans /etc/fstab pour un testMode 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 configSubstitution avec $
Éditer une liste CSV copiée dans un fichier temporaireText objects ci", di,

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.

ModeComment y entrerCe qu’il permet
NormalEsc (mode par défaut au démarrage)Naviguer, supprimer, copier, coller, répéter
Insertioni, a, o, I, A, O depuis le normalTaper du texte comme dans un éditeur classique
Commande: depuis le normalSauvegarder, quitter, substituer, ouvrir un autre fichier

Plusieurs touches font passer en insertion, chacune avec une nuance utile :

ToucheOù insère-t-elle ?
iAvant le curseur
aAprès le curseur
IAu début de la ligne courante
AÀ la fin de la ligne courante
oSur une nouvelle ligne en dessous
OSur 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 aA vous y place directement en mode insertion.

C’est la première chose à maîtriser : ne pas perdre son travail et ne pas rester bloqué dans l’éditeur.

CommandeCe qu’elle fait
vim fichierOuvre (ou crée) le fichier
:wSauvegarde (write)
:qQuitte — refuse si des modifications sont non sauvegardées
:wq ou ZZSauvegarde et quitte
:q!Quitte sans sauvegarder (abandonne les modifications)
:w fichierSauvegarde sous un autre nom
:e fichierOuvre un autre fichier dans la session courante

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.

RaccourciDéplacement
h / j / k / lGauche / Bas / Haut / Droite
wDébut du mot suivant
bDébut du mot précédent
eFin du mot courant
0Début de la ligne
^Premier caractère non blanc de la ligne
$Fin de la ligne
ggPremière ligne du fichier
GDernière ligne du fichier
25G ou :25Aller à la ligne 25
Ctrl+d / Ctrl+uDemi-page vers le bas / le haut
%Parenthèse/accolade correspondante

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.

OpérateurVerbeCe qu’il fait
ddeleteSupprime
cchangeSupprime et passe en insertion
yyankCopie dans le presse-papier Vim
> / <indentDécale à droite / à gauche

La magie de Vim : tout se compose. Quelques exemples utiles au quotidien :

CommandeLectureRésultat
dwdelete wordSupprime jusqu’au prochain mot
d$delete jusqu’en fin de ligneSupprime tout jusqu’au bout
dddelete lineSupprime la ligne entière
5dddelete 5 linesSupprime 5 lignes
yyyank lineCopie la ligne
cwchange wordSupprime le mot et passe en insertion
c$change jusqu’en fin de ligneRemplace la fin de la ligne
CommandeCe qu’elle fait
yyCopier la ligne courante
pColler après le curseur (ou après la ligne)
PColler avant le curseur
xSupprimer le caractère sous le curseur
r{c}Remplacer le caractère par {c} sans entrer en insertion
uAnnuler la dernière modification
Ctrl+rRé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 :

CommandeRésultat
ciwSupprime 80 et passe en insertion — tapez 443, Esclisten 443 default_server;
dawSupprime 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 :

CommandeRésultat
ci"Remplace le contenu entre guillemets ("8080""" + insertion)
di"Supprime uniquement 8080
da"Supprime "8080" (guillemets inclus)

Délimiteurs les plus utiles :

DélimiteurCible
", ', `Contenu entre guillemets
( ou )Contenu entre parenthèses
{ ou }Contenu entre accolades
[ ou ]Contenu entre crochets
wLe mot sous le curseur
pLe paragraphe courant

Le mode visuel ajoute une étape de sélection rassurante : vous voyez ce qui va être affecté avant d’agir.

RaccourciType de sélection
vCaractère par caractère
VLigne entière
Ctrl+vBloc rectangulaire (colonnes)

Une fois sélectionné, appuyez sur une action : y (copier), d (couper), c (remplacer), > (indenter), < (désindenter), Esc (annuler la sélection).

Scénario : désactiver 5 lignes dans /etc/fstab en ajoutant # au début de chacune.

  1. Placez le curseur sur la première ligne à commenter.

  2. Appuyez sur Ctrl+v pour entrer en mode bloc visuel. -- VISUAL BLOCK -- apparaît en bas.

  3. Descendez avec 4j pour sélectionner 5 lignes (ligne courante + 4 dessous).

  4. Appuyez sur I (majuscule). Vim passe en insertion au début de la première ligne.

  5. Tapez # (dièse + espace).

  6. 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.

Sur un fichier de configuration de 200 lignes, retrouver un paramètre ou renommer une valeur partout sans erreur est indispensable.

CommandeCe qu’elle fait
/motifCherche motif vers le bas
?motifCherche motif vers le haut
nOccurrence suivante
NOccurrence précédente
*Cherche le mot sous le curseur (vers le bas)
#Cherche le mot sous le curseur (vers le haut)

La syntaxe est proche de sed :

:[portée]s/ancien/nouveau/[drapeaux]
CommandeCe qu’elle fait
:s/foo/bar/Remplace la première occurrence sur la ligne courante
:s/foo/bar/gRemplace toutes les occurrences sur la ligne
:%s/foo/bar/gRemplace toutes les occurrences dans tout le fichier
:%s/foo/bar/gcIdem avec confirmation pour chaque occurrence
:5,20s/foo/bar/gRemplace 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/gc

Vim surligne chaque occurrence et vous demande y (oui), n (non), a (toutes), q (quitter), l (celle-ci et quitter).

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 syntaxique
set number " Numéros de ligne
set showmatch " Surligne la parenthèse correspondante
" === Recherche ===
set incsearch " Résultats en temps réel
set hlsearch " Surligne toutes les occurrences
set ignorecase " Insensible à la casse
set smartcase " Sauf si majuscule dans la recherche
" === Indentation ===
set tabstop=4
set shiftwidth=4
set expandtab " Tab insère des espaces (pas \t)
set autoindent " Conserve l'indentation
" === Confort ===
set encoding=utf-8
set scrolloff=8 " Garde 8 lignes visibles autour du curseur

Créez (ou complétez) ~/.vimrc :

Fenêtre de terminal
vim ~/.vimrc

Après modification, appliquez sans relancer :

:source ~/.vimrc

Vim possède une documentation intégrée très complète. Prenez le réflexe de la consulter directement.

CommandeCe qu’elle affiche
:helpPage d’accueil de l’aide
:help motionTout sur les motions
:help text-objectsTout sur les text objects
:help :substituteQuestion sur la substitution
:helpgrep motifCherche dans toute la documentation

Dans l’aide : Ctrl+] suit un lien, Ctrl+o revient en arrière, :q ferme.

SymptômeCause probableSolution
Caractères étranges à la frappeVous avez quitté l’insertion sans le savoirEsc puis i pour reprendre
E45: 'readonly' option is set à :wFichier système ouvert sans sudo:w !sudo tee % puis :q!
Le texte collé s’indente en escalierAuto-indent applique sur chaque ligne collée:set paste, coller, :set nopaste
Pas de coloration syntaxiquesyntax on absent du .vimrcAjouter syntax on
Copier-coller système inopérantVim sans +clipboardsudo apt install vim-gtk3 sur Debian/Ubuntu
Caractères bizarres dans le terminalEncodage incorrectset encoding=utf-8 dans .vimrc
« Tout l’écran est sélectionné »Vous êtes en mode visuelEsc
Vim refuse de quitterModifications non sauvegardées:w pour sauvegarder ou :q! pour abandonner
  • Vim a 3 modes — normal, insertion, commande. En cas de doute, Esc vous 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 à n aprè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 le c pour confirmer avant chaque remplacement risqué.
  • Pour éditer un fichier système, ouvrez avec sudo vim. Si oublié : :w !sudo tee % sauve la mise.
  • Un .vimrc minimal (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.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn