guides/serveur/linux-essentials/vim-guide-essentiel.md
isUnknown d0a243509d Refonte complète des guides VPS et ajout guides Kirby/CI-CD
- Restructuration VPS : guides rapide et complet séparés
- Nouveau guide Vim essentiel pour administration serveur
- Guide déploiement Kirby (VirtualHost, multi-sites, permissions)
- Guide CI/CD Kirby (GitLab CI, Forgejo Actions, Docker)
- Anonymisation complète (sécurité pour publication publique)
- Priorité aux solutions libres (Forgejo, GitLab)
- README général et navigation améliorée

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 14:58:13 +01:00

12 KiB

Guide essentiel Vim

Guide de survie Vim pour l'administration serveur. Apprenez le minimum vital en 15 minutes.


Pourquoi Vim ?

Vim est installé par défaut sur 99% des serveurs Linux. Quand vous vous connectez à un serveur distant :

  • nano n'est pas toujours installé
  • vim/vi est TOUJOURS là
  • C'est l'éditeur standard Unix depuis 1976

Avantages :

  • Ultra-rapide (pas d'interface graphique)
  • Puissant (édition avec le clavier uniquement)
  • Universel (même syntaxe sur tous les systèmes)

Les 3 modes de Vim

Vim fonctionne avec 3 modes distincts (c'est ça qui déroute au début) :

1. Mode Normal (par défaut)

  • Navigation dans le fichier
  • Commandes (copier, coller, supprimer)
  • Touche Esc pour revenir en mode Normal

2. Mode Insertion

  • Éditer du texte (comme un éditeur classique)
  • Touche i pour entrer en mode Insertion
  • Touche Esc pour revenir en mode Normal

3. Mode Commande

  • Sauvegarder, quitter, chercher/remplacer
  • Touche : pour entrer en mode Commande
  • Taper la commande puis Entrée

Premiers pas : Ouvrir et quitter

Ouvrir un fichier

# Ouvrir un fichier existant
vim /etc/ssh/sshd_config

# Créer un nouveau fichier
vim nouveau-fichier.txt

# Ouvrir directement à la ligne 42
vim +42 fichier.txt

# Ouvrir avec sudo (fichiers système)
sudo vim /etc/apache2/apache2.conf

Quitter Vim

Mode Normal → Tapez : puis :

:q          " Quitter (si pas de modifications)
:q!         " Quitter SANS sauvegarder (force)
:w          " Sauvegarder (write)
:wq         " Sauvegarder ET quitter
:x          " Sauvegarder ET quitter (raccourci)
ZZ          " Sauvegarder ET quitter (sans :)

🆘 Vous êtes bloqué ?

Esc Esc Esc :q! Entrée

Éditer du texte

Entrer en mode Insertion

Depuis le mode Normal :

i           " Insert : insérer AVANT le curseur
a           " Append : insérer APRÈS le curseur
o           " Open : créer une nouvelle ligne EN DESSOUS
O           " Open : créer une nouvelle ligne AU DESSUS

I           " Insérer au DÉBUT de la ligne
A           " Insérer à la FIN de la ligne

💡 Astuce : i et a sont les plus utilisés (90% du temps)

Modifier du texte

En mode Normal :

x           " Supprimer le caractère sous le curseur
dd          " Supprimer toute la ligne
dw          " Supprimer un mot (delete word)
d$          " Supprimer jusqu'à la fin de la ligne
D           " Supprimer jusqu'à la fin de la ligne (raccourci)

u           " Annuler (undo)
Ctrl+r      " Refaire (redo)

yy          " Copier la ligne (yank)
p           " Coller après le curseur (paste)
P           " Coller avant le curseur

Remplacer du texte

r           " Remplacer UN caractère (puis taper le nouveau)
cw          " Remplacer un mot (change word)
cc          " Remplacer toute la ligne (change)
C           " Remplacer jusqu'à la fin de la ligne

Naviguer dans le fichier

Déplacements de base

Mode Normal :

" Flèches directionnelles (fonctionnent aussi)
h           " Gauche  ←
j           " Bas     ↓
k           " Haut    ↑
l           " Droite  →

" Déplacements par mot
w           " Mot suivant (word)
b           " Mot précédent (back)
e           " Fin du mot (end)

" Déplacements dans la ligne
0           " Début de la ligne
$           " Fin de la ligne
^           " Premier caractère non-blanc de la ligne

" Déplacements dans le fichier
gg          " Début du fichier
G           " Fin du fichier
42G         " Aller à la ligne 42
:42         " Aller à la ligne 42 (alternative)

Défilement

Ctrl+d      " Défiler d'une demi-page vers le bas (down)
Ctrl+u      " Défiler d'une demi-page vers le haut (up)
Ctrl+f      " Défiler d'une page vers le bas (forward)
Ctrl+b      " Défiler d'une page vers le haut (back)

Chercher et remplacer

Chercher

Mode Normal :

/motif      " Chercher "motif" vers le bas
?motif      " Chercher "motif" vers le haut

n           " Résultat suivant (next)
N           " Résultat précédent

*           " Chercher le mot sous le curseur (vers le bas)
#           " Chercher le mot sous le curseur (vers le haut)

💡 Exemple : Chercher "PasswordAuthentication" dans sshd_config

/PasswordAuthentication
" Appuyez sur 'n' pour voir les occurrences suivantes

Remplacer

Mode Commande (taper :) :

" Format général : :[plage]s/ancien/nouveau/[options]

:s/ancien/nouveau/          " Remplacer sur la ligne courante (1ère occurrence)
:s/ancien/nouveau/g         " Remplacer sur la ligne courante (toutes)

:%s/ancien/nouveau/         " Remplacer dans tout le fichier (1ère par ligne)
:%s/ancien/nouveau/g        " Remplacer dans tout le fichier (toutes)
:%s/ancien/nouveau/gc       " Avec confirmation (c = confirm)

:10,20s/ancien/nouveau/g    " Remplacer des lignes 10 à 20

💡 Exemples pratiques :

" Remplacer tous les "no" par "yes"
:%s/no/yes/g

" Commenter toutes les lignes (ajouter # au début)
:%s/^/#/

" Décommenter (supprimer # au début)
:%s/^#//

" Remplacer avec confirmation
:%s/PermitRootLogin yes/PermitRootLogin no/gc

Cas d'usage : Administration serveur

1. Éditer sshd_config

sudo vim /etc/ssh/sshd_config

Workflow typique :

  1. Chercher le paramètre :

    /PermitRootLogin
    
  2. Aller en mode Insertion :

    i
    
  3. Modifier la valeur :

    PermitRootLogin no
    
  4. Sauvegarder et quitter :

    Esc :wq
    

2. Éditer un VirtualHost Apache

sudo vim /etc/apache2/sites-available/monsite.conf

Ajouter une ligne à la fin :

G               " Aller à la fin du fichier
o               " Créer une nouvelle ligne
" Taper votre texte
Esc :wq         " Sauvegarder et quitter

3. Décommenter plusieurs lignes

Exemple : Décommenter 5 lignes consécutives

" Méthode 1 : Chercher/remplacer
:10,15s/^#//    " Décommenter lignes 10 à 15

" Méthode 2 : Visual block (avancé)
Ctrl+v          " Mode visuel block
jjjj            " Sélectionner 5 lignes vers le bas
x               " Supprimer les # sélectionnés

4. Copier/coller une configuration

Dupliquer un bloc de configuration :

" Se placer sur la première ligne
V               " Mode visuel ligne (Visual)
jjjj            " Sélectionner 5 lignes
y               " Copier (yank)
p               " Coller après

Configuration utile de Vim

Créer un .vimrc minimal

vim ~/.vimrc

Configuration recommandée :

" Activer la numérotation des lignes
set number

" Activer la coloration syntaxique
syntax on

" Indentation automatique
set autoindent
set smartindent

" Taille des tabulations (4 espaces)
set tabstop=4
set shiftwidth=4
set expandtab

" Afficher la position du curseur
set ruler

" Recherche intelligente (insensible à la casse)
set ignorecase
set smartcase

" Highlighting des résultats de recherche
set hlsearch
set incsearch

" Désactiver le swap (fichiers .swp)
set noswapfile

" Sauvegarder l'historique des annulations
set undofile
set undodir=~/.vim/undodir

Appliquer immédiatement :

mkdir -p ~/.vim/undodir

Commandes avancées utiles

Indentation

>>          " Indenter la ligne (vers la droite)
<<          " Désindenter (vers la gauche)

" Indenter un bloc
V           " Mode visuel
jjjj        " Sélectionner des lignes
>           " Indenter

Nombres et répétitions

Format : [nombre][commande]

3dd         " Supprimer 3 lignes
5yy         " Copier 5 lignes
10j         " Descendre de 10 lignes
3w          " Avancer de 3 mots
.           " Répéter la dernière commande

Buffers (fichiers multiples)

:e fichier2.txt     " Ouvrir un autre fichier
:bn                 " Buffer suivant (next)
:bp                 " Buffer précédent (previous)
:bd                 " Fermer le buffer courant
:ls                 " Lister tous les buffers ouverts

Split (fenêtres)

:sp fichier.txt     " Split horizontal
:vsp fichier.txt    " Split vertical

Ctrl+w w            " Naviguer entre les splits
Ctrl+w q            " Fermer le split courant
Ctrl+w =            " Égaliser la taille des splits

Aide et ressources

Aide intégrée

:help           " Aide générale
:help dd        " Aide sur une commande spécifique
:help modes     " Aide sur les modes

Tutoriel interactif

# Depuis votre terminal
vimtutor        # Tutoriel interactif (30 min)

Cheat Sheet : L'essentiel

Ouvrir/Fermer

vim fichier     " Ouvrir
:w              " Sauvegarder
:wq ou :x       " Sauvegarder et quitter
:q!             " Quitter sans sauvegarder

Modes

Esc             " Mode Normal
i               " Mode Insertion (avant curseur)
a               " Mode Insertion (après curseur)
:               " Mode Commande

Édition

dd              " Supprimer la ligne
yy              " Copier la ligne
p               " Coller
u               " Annuler
Ctrl+r          " Refaire

Navigation

gg              " Début du fichier
G               " Fin du fichier
0               " Début de la ligne
$               " Fin de la ligne
:42             " Aller ligne 42

Recherche

/motif          " Chercher
n               " Suivant
:%s/old/new/g   " Remplacer tout

Erreurs courantes et solutions

"E45: 'readonly' option is set"

Cause : Fichier en lecture seule (souvent fichiers système) Solution :

:w !sudo tee %      " Sauvegarder avec sudo
" Ou quitter et réouvrir avec sudo
:q!
sudo vim /etc/fichier

"E37: No write since last change"

Cause : Modifications non sauvegardées Solution :

:w              " Sauvegarder
" Ou forcer à quitter
:q!

"Found a swap file"

Cause : Vim a crashé ou fichier ouvert ailleurs Solution :

" Taper 'r' pour récupérer le fichier
" Ou 'd' pour supprimer le swap file
" Puis supprimer manuellement :
rm .fichier.swp

Bloqué en mode Insertion

Solution :

Appuyez sur Esc plusieurs fois

Impossible de quitter

Solution :

Esc Esc Esc
:q!

Mémo pour débuter

1. Ouvrir un fichier :

vim fichier.txt

2. Entrer en mode Insertion :

Appuyez sur 'i'

3. Modifier le texte :

Tapez normalement

4. Revenir en mode Normal :

Appuyez sur Esc

5. Sauvegarder et quitter :

:wq puis Entrée

Progression recommandée

Semaine 1 : Bases

  • Ouvrir/fermer des fichiers
  • Modes Normal et Insertion
  • Sauvegarder avec :w et :wq
  • Navigation de base (hjkl, gg, G)

Semaine 2 : Édition

  • Supprimer avec dd, x
  • Copier/coller avec yy, p
  • Annuler/refaire avec u, Ctrl+r
  • Chercher avec /

Semaine 3 : Efficacité

  • Remplacer avec :s///
  • Mouvements rapides (w, b, $, 0)
  • Répétitions avec nombres (3dd, 5yy)
  • Visual mode avec V

Mois 2+ : Maîtrise

  • Configuration .vimrc
  • Buffers et splits
  • Macros
  • Plugins

Pourquoi persévérer ?

Après 2 semaines : Vous éditez aussi vite qu'avec nano Après 1 mois : Vous éditez plus vite qu'avec un éditeur graphique Après 3 mois : Vous ne pouvez plus vous en passer

Vim est un investissement : Difficile au début, incroyablement efficace après.


Ressources complémentaires

  • vimtutor : Tutoriel interactif inclus avec Vim (30 min)
  • Vim Adventures : Apprendre Vim en jouant
  • OpenVim : Tutoriel interactif en ligne
  • :help dans Vim : Documentation complète intégrée

Cheat sheets :


TL;DR : Minimum vital

vim fichier         # Ouvrir
i                   # Éditer
Esc                 # Arrêter d'éditer
:wq                 # Sauvegarder et quitter
:q!                 # Quitter sans sauvegarder (si erreur)

/chercher           # Chercher
dd                  # Supprimer ligne
u                   # Annuler

C'est tout ce dont vous avez besoin pour 80% des cas d'administration serveur !