Comment utiliser Vim sur un VPS Linux
Un tutoriel Vim pratique construit autour de tâches réelles d'administration serveur. Apprenez les modes, la navigation, l'édition, la recherche et le remplacement, les fenêtres divisées, la configuration .vimrc et les flux de travail pour modifier des fichiers Nginx, SSH et Docker Compose via SSH.
Vim est l'éditeur de texte par défaut sur la plupart des serveurs Linux. Quand vous vous connectez en SSH à un VPS pour modifier une configuration Nginx, changer un port SSH ou ajuster un fichier Docker Compose, Vim est l'outil disponible. Ce tutoriel enseigne Vim à travers des tâches réelles d'administration serveur plutôt que des exemples abstraits.
Vous apprendrez comment fonctionnent les modes Vim, comment naviguer et éditer des fichiers efficacement, comment chercher et remplacer du texte, comment travailler avec plusieurs fichiers grâce aux splits et buffers, et comment configurer un .vimrc qui accélère le travail sur serveur.
Prérequis : Un VPS Linux (Debian ou Ubuntu) avec un accès SSH. Une familiarité de base avec le terminal (exécution de commandes, navigation dans les répertoires).
Comment installer Vim sur Ubuntu ou Debian ?
La plupart des serveurs Debian et Ubuntu sont livrés avec vim-tiny, une version allégée dépourvue de coloration syntaxique, d'historique d'annulation et de support des plugins. Installez la version complète pour disposer de toutes les fonctionnalités couvertes dans ce tutoriel.
sudo apt update && sudo apt install vim -y
Vérifiez l'installation :
vim --version | head -1
Sortie attendue sur Debian 12 (Bookworm) :
VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Nov 15 2023 17:28:07)
Sur Ubuntu 24.04 LTS, vous verrez Vim 9.1. La version exacte varie selon la distribution, mais toutes les fonctionnalités de ce tutoriel fonctionnent avec Vim 8.2 et versions ultérieures.
Et Neovim ? Neovim est un fork de Vim avec un système de configuration basé sur Lua et un support LSP intégré. Tout ce tutoriel s'applique à Neovim sauf le chemin du .vimrc (Neovim utilise ~/.config/nvim/init.vim). Si vous préférez Neovim, installez-le avec sudo apt install neovim.
Lancez le tutoriel intégré
Vim est livré avec un tutoriel interactif qui prend environ 30 minutes. Lancez-le avant de poursuivre votre lecture si vous n'avez jamais utilisé Vim :
vimtutor
Cela ouvre un fichier d'entraînement où vous apprenez en pratiquant. Il couvre les bases du déplacement et de l'édition. Le reste de cet article va plus en profondeur et ajoute des flux de travail spécifiques au serveur que vimtutor ne couvre pas.
Quels sont les modes Vim et comment fonctionnent-ils ?
Vim possède quatre modes principaux. Le mode Normal est le mode par défaut. Vous l'utilisez pour la navigation et l'exécution de commandes. Le mode Insertion sert à taper du texte, on y entre avec i. Le mode Visuel sert à sélectionner du texte, on y entre avec v. Le mode Ligne de commande exécute des commandes comme sauvegarder et quitter, on y entre avec :. Appuyez sur Esc pour revenir au mode Normal depuis n'importe quel autre mode.
C'est différent des éditeurs comme nano où vous tapez immédiatement. Dans Vim, les frappes en mode Normal sont des commandes, pas des caractères. C'est ce qu'on appelle l'édition modale.
| Mode | Entrée | Fonction | Retour au mode Normal |
|---|---|---|---|
| Normal | Esc (ou ouvrir un fichier) |
Naviguer, supprimer, copier, coller, exécuter des commandes | Déjà en mode Normal |
| Insertion | i, a, o, I, A, O |
Taper et éditer du texte | Esc |
| Visuel | v (caractère), V (ligne), Ctrl+v (bloc) |
Sélectionner du texte pour des opérations | Esc |
| Ligne de commande | : |
Exécuter des commandes ex (sauvegarder, quitter, chercher, remplacer) | Enter ou Esc |
L'indicateur de mode apparaît en bas à gauche de l'écran. Quand vous voyez -- INSERT --, vous êtes en mode Insertion. Quand rien n'est affiché, vous êtes en mode Normal.
Si vous vous sentez bloqué : appuyez sur Esc deux ou trois fois. Cela vous ramène toujours en mode Normal quel que soit votre état actuel.
Comment naviguer dans les fichiers avec Vim ?
La navigation dans Vim se fait en mode Normal. Les touches de déplacement de base sont h (gauche), j (bas), k (haut) et l (droite). Les touches fléchées fonctionnent aussi, mais hjkl garde vos doigts sur la rangée de repos et devient plus rapide une fois la mémoire musculaire acquise.
Déplacement par caractère et par ligne
| Touche | Action |
|---|---|
h |
Se déplacer d'un caractère à gauche |
j |
Descendre d'une ligne |
k |
Monter d'une ligne |
l |
Se déplacer d'un caractère à droite |
0 |
Aller au début de la ligne |
$ |
Aller à la fin de la ligne |
^ |
Aller au premier caractère non vide |
Déplacement par mot
| Touche | Action |
|---|---|
w |
Aller au début du mot suivant |
b |
Revenir au début du mot précédent |
e |
Aller à la fin du mot courant |
W |
Aller au MOT suivant (délimité par des espaces) |
B |
Revenir au MOT précédent |
Déplacement dans le fichier
| Touche | Action |
|---|---|
gg |
Aller à la première ligne du fichier |
G |
Aller à la dernière ligne du fichier |
42G ou :42 |
Aller à la ligne 42 |
Ctrl+d |
Défiler d'une demi-page vers le bas |
Ctrl+u |
Défiler d'une demi-page vers le haut |
Ctrl+f |
Défiler d'une page entière vers le bas |
Ctrl+b |
Défiler d'une page entière vers le haut |
% |
Aller à la parenthèse correspondante ((, {, [) |
Navigation par recherche
Appuyez sur / pour chercher vers l'avant, tapez votre terme de recherche et appuyez sur Enter. Appuyez sur n pour aller au résultat suivant et N pour aller au résultat précédent. Appuyez sur ? pour chercher vers l'arrière.
Exemple : vous éditez /etc/nginx/nginx.conf et vous devez trouver la directive worker_connections :
/worker_connections
Vim se positionne sur la première occurrence. Appuyez sur n pour parcourir toutes les occurrences dans le fichier.
Comment éditer du texte dans Vim ?
L'édition dans Vim suit un schéma : opérateur + mouvement. L'opérateur indique quoi faire (supprimer, changer, copier). Le mouvement indique sur quel texte agir (mot, ligne, paragraphe). Cette composabilité est ce qui rend Vim rapide une fois que vous avez assimilé quelques briques de base.
Entrer en mode Insertion
| Touche | Action |
|---|---|
i |
Insérer avant le curseur |
a |
Ajouter après le curseur |
I |
Insérer au début de la ligne |
A |
Ajouter à la fin de la ligne |
o |
Ouvrir une nouvelle ligne en dessous et passer en mode Insertion |
O |
Ouvrir une nouvelle ligne au-dessus et passer en mode Insertion |
Supprimer, changer, copier et coller
| Commande | Action |
|---|---|
x |
Supprimer le caractère sous le curseur |
dd |
Supprimer la ligne entière |
dw |
Supprimer du curseur au début du mot suivant |
d$ ou D |
Supprimer du curseur à la fin de la ligne |
cc |
Changer la ligne entière (supprime et passe en mode Insertion) |
cw |
Changer le mot (supprime le mot et passe en mode Insertion) |
ci" |
Changer à l'intérieur des guillemets (supprime le texte entre " et passe en mode Insertion) |
yy |
Copier (yank) la ligne entière |
yw |
Copier le mot |
p |
Coller (put) après le curseur |
P |
Coller avant le curseur |
Annuler et rétablir
| Touche | Action |
|---|---|
u |
Annuler la dernière modification |
Ctrl+r |
Rétablir (annuler l'annulation) |
. |
Répéter la dernière modification |
La commande . (point) est l'une des fonctionnalités les plus utiles de Vim. Elle répète ce que vous avez fait en dernier. Changez un mot avec cw, tapez le remplacement, appuyez sur Esc. Déplacez-vous maintenant sur un autre mot et appuyez sur . pour effectuer le même changement.
Exemples d'édition liés au serveur
Supprimer une directive d'une configuration Nginx :
Positionnez votre curseur sur la ligne access_log /var/log/nginx/access.log; et appuyez sur dd pour supprimer la ligne entière.
Changer un numéro de port entre guillemets :
Positionnez votre curseur n'importe où à l'intérieur de "8080" dans un fichier Docker Compose et appuyez sur ci". Cela supprime 8080 et vous place en mode Insertion. Tapez 3000 et appuyez sur Esc.
Supprimer deux mots d'une directive :
Appuyez sur d2w pour supprimer les deux mots suivants à partir de la position du curseur. Les commandes Vim acceptent un nombre avant le mouvement : 3dd supprime trois lignes, 5j descend de cinq lignes.
Comment chercher et remplacer du texte dans Vim ?
Utilisez :s (substitute) pour remplacer du texte. La syntaxe de base est :s/ancien/nouveau/options. Cette commande s'applique à la ligne courante par défaut. Utilisez :%s pour l'appliquer à l'ensemble du fichier.
Modèles de substitution
| Commande | Action |
|---|---|
:s/foo/bar/ |
Remplacer le premier foo par bar sur la ligne courante |
:s/foo/bar/g |
Remplacer tous les foo par bar sur la ligne courante |
:%s/foo/bar/g |
Remplacer tous les foo par bar dans tout le fichier |
:%s/foo/bar/gc |
Remplacer tous avec confirmation (o/n pour chaque occurrence) |
:5,10s/foo/bar/g |
Remplacer tous sur les lignes 5 à 10 |
Exemples pratiques
Changer le port d'écoute Nginx de 80 à 443 :
:%s/listen 80;/listen 443 ssl;/g
Commenter une ligne dans sshd_config :
Déplacez-vous sur la ligne et appuyez sur I pour insérer au début, tapez #, appuyez sur Esc.
Commenter plusieurs lignes : Sélectionnez les lignes avec V (mode visuel ligne), descendez avec j pour étendre la sélection, puis tapez :s/^/#/ et appuyez sur Enter. Cela ajoute # au début de chaque ligne sélectionnée.
Remplacer un tag d'image Docker :
:%s/nginx:1.24/nginx:1.27/g
Bases des regex dans la substitution Vim
Vim utilise sa propre syntaxe regex. Quelques motifs que vous utiliserez souvent sur des configurations serveur :
| Motif | Correspond à |
|---|---|
^ |
Début de ligne |
$ |
Fin de ligne |
. |
N'importe quel caractère |
\d |
Un chiffre (0-9) |
.* |
N'importe quels caractères (gourmand) |
\s |
Espace blanc |
Pour correspondre aux points littéraux (comme dans les adresses IP), échappez-les : :%s/192\.168\.1\.1/10.0.0.1/g.
Comment éditer plusieurs fichiers dans Vim avec les splits et les buffers ?
Vim peut ouvrir plusieurs fichiers dans une seule session grâce aux buffers, aux fenêtres divisées et aux onglets. C'est utile quand vous devez croiser des fichiers pendant l'édition, comme consulter nginx.conf tout en modifiant un bloc serveur spécifique.
Buffers
Un buffer est un fichier chargé en mémoire. Vous pouvez avoir plusieurs buffers ouverts et basculer entre eux.
| Commande | Action |
|---|---|
:e /etc/nginx/sites-available/default |
Ouvrir un fichier dans un nouveau buffer |
:bn |
Passer au buffer suivant |
:bp |
Passer au buffer précédent |
:ls |
Lister tous les buffers ouverts |
:b2 |
Passer au buffer numéro 2 |
:bd |
Fermer le buffer courant |
Fenêtres divisées
Les splits permettent de voir deux fichiers côte à côte dans le même terminal.
| Commande | Action |
|---|---|
:sp /chemin/du/fichier |
Split horizontal (haut/bas) |
:vs /chemin/du/fichier |
Split vertical (gauche/droite) |
Ctrl+w h/j/k/l |
Se déplacer entre les splits (gauche/bas/haut/droite) |
Ctrl+w = |
Rendre tous les splits de taille égale |
Ctrl+w q |
Fermer le split courant |
Exemple de flux de travail : éditer un fichier Docker Compose tout en consultant le fichier .env :
:e docker-compose.yml
:vs .env
Vous avez maintenant deux panneaux. Utilisez Ctrl+w l et Ctrl+w h pour basculer entre eux.
Onglets
Les onglets sont des collections de fenêtres. La plupart des utilisateurs trouvent les splits suffisants pour le travail sur serveur, mais les onglets sont disponibles :
| Commande | Action |
|---|---|
:tabnew /chemin/du/fichier |
Ouvrir un fichier dans un nouvel onglet |
gt |
Aller à l'onglet suivant |
gT |
Aller à l'onglet précédent |
:tabclose |
Fermer l'onglet courant |
Comment personnaliser Vim avec un fichier .vimrc ?
Le fichier .vimrc dans votre répertoire personnel contrôle le comportement de Vim. Sans lui, Vim fonctionne dans un mode quasi compatible Vi qui manque de nombreuses fonctionnalités. Un bon .vimrc adapté au travail serveur rend l'édition de fichiers de configuration plus rapide.
Créez ou éditez votre .vimrc :
vim ~/.vimrc
Ajoutez ces paramètres. Chaque ligne est accompagnée d'un commentaire explicatif :
" Disable Vi compatibility mode (enable all Vim features)
set nocompatible
" Use UTF-8 encoding (required for special characters in listchars on minimal server images)
set encoding=utf-8
" Show line numbers (essential for config files with error messages referencing line numbers)
set number
" Show relative line numbers (makes jumping N lines easy: 5j, 12k)
set relativenumber
" Enable syntax highlighting
syntax on
" Use spaces instead of tabs (most config files expect spaces)
set expandtab
" Set tab width to 2 spaces (common for YAML, Nginx configs)
set tabstop=2
set shiftwidth=2
set softtabstop=2
" Highlight search results as you type
set incsearch
set hlsearch
" Case-insensitive search unless uppercase is used
set ignorecase
set smartcase
" Show matching brackets
set showmatch
" Always show the status line (shows filename and position)
set laststatus=2
" Enable mouse support (useful in modern terminals)
set mouse=a
" Show current mode in status line
set showmode
" Set pastetoggle to F2 (toggle paste mode for clean pasting over SSH)
set pastetoggle=<F2>
" Disable swap files (avoids .swp clutter on servers)
set noswapfile
" Enable filetype detection (loads correct indentation for yaml, json, etc.)
filetype plugin indent on
" Highlight the current line
set cursorline
" Show whitespace characters (catch trailing spaces and mixed indentation)
set list
set listchars=tab:»·,trail:·
Sauvegardez et quittez avec :wq. Les paramètres prennent effet au prochain lancement de Vim.
Pour recharger votre .vimrc sans redémarrer Vim :
:source ~/.vimrc
Mode collage pour les sessions SSH
Quand vous collez du texte depuis votre presse-papiers local dans Vim via SSH, l'indentation automatique peut créer un effet de cascade où chaque ligne se décale davantage vers la droite. Cela se produit parce que Vim traite le texte collé comme du texte tapé et applique les règles d'indentation à chaque ligne.
Activez le mode collage avant de coller :
- Appuyez sur
F2(si vous avez configurépastetogglecomme indiqué plus haut) ou tapez:set paste - Passez en mode Insertion avec
i - Collez votre texte (Ctrl+Shift+V ou clic droit dans votre terminal)
- Appuyez de nouveau sur
F2ou tapez:set nopaste
Les terminaux modernes avec Vim 8.2+ supportent le mode de collage entre crochets (bracketed paste mode), qui gère cela automatiquement. Si vous utilisez un émulateur de terminal récent (kitty, Alacritty, WezTerm, GNOME Terminal récent), le basculement du mode collage peut ne pas être nécessaire.
Comment ajouter des plugins avec vim-plug ?
vim-plug est un gestionnaire de plugins léger qui installe les plugins en parallèle. Il nécessite le téléchargement d'un seul fichier et quelques lignes dans votre .vimrc.
Installer vim-plug
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Vérifiez que le fichier existe :
ls -la ~/.vim/autoload/plug.vim
Vous devriez voir le fichier avec votre utilisateur comme propriétaire.
Configurer les plugins dans le .vimrc
Ajoutez un bloc de plugins en haut de votre ~/.vimrc, avant les paramètres :
call plug#begin('~/.vim/plugged')
" File explorer sidebar
Plug 'preservim/nerdtree'
" Fuzzy file finder
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
" Git status indicators in the gutter
Plug 'airblade/vim-gitgutter'
call plug#end()
Sauvegardez le fichier, puis installez les plugins :
:source ~/.vimrc
:PlugInstall
vim-plug télécharge chaque plugin en parallèle. Après l'installation, vous pouvez ouvrir NERDTree avec :NERDTree, utiliser :Files pour trouver des fichiers de manière floue, et voir les marqueurs de diff git dans la gouttière.
Restez minimaliste sur les serveurs. Les plugins ajoutent du temps de démarrage. Sur un VPS où vous éditez des fichiers de configuration occasionnellement, trois à cinq plugins suffisent. Réservez les configurations lourdes pour votre machine de développement locale.
Comment éditer des fichiers de configuration serveur avec Vim via SSH ?
Cette section couvre les flux de travail que vous utiliserez de façon répétée pour gérer un VPS. Chaque exemple utilise un vrai fichier et montre les étapes exactes.
Utilisez sudoedit au lieu de sudo vim
Quand vous éditez des fichiers appartenant à root comme /etc/nginx/nginx.conf ou /etc/ssh/sshd_config, utilisez sudoedit au lieu de sudo vim.
sudoedit /etc/nginx/nginx.conf
sudoedit copie le fichier dans un emplacement temporaire, l'ouvre avec le Vim de votre utilisateur (y compris vos paramètres .vimrc et vos plugins), puis le recopie avec les permissions root quand vous sauvegardez et quittez. C'est plus sûr que sudo vim pour deux raisons :
sudo vimexécute Vim en tant que root. N'importe quelle commande Vim comme:!bashlance un shell root. Sur les serveurs multi-utilisateurs, c'est un risque d'élévation de privilèges.sudoeditpréserve votre environnement utilisateur. Vous gardez votre coloration syntaxique, vos numéros de ligne et vos raccourcis clavier.
Éditer un bloc serveur Nginx
Ouvrez la configuration du site par défaut :
sudoedit /etc/nginx/sites-available/default
Trouvez la directive server_name en tapant /server_name et en appuyant sur Enter. Vim se positionne sur l'occurrence. Appuyez sur cw pour changer le mot après la directive, tapez votre domaine, appuyez sur Esc.
Après avoir sauvegardé, vérifiez la syntaxe de la configuration Nginx :
sudo nginx -t
Sortie attendue :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Puis rechargez :
sudo systemctl reload nginx
Changer le port SSH dans sshd_config
sudoedit /etc/ssh/sshd_config
Cherchez la directive de port :
/^#\?Port
Cette regex correspond à la fois à Port et #Port (commenté). Si la ligne est commentée, appuyez sur 0 pour aller au début de la ligne, appuyez sur x pour supprimer le #, puis appuyez sur f suivi d'un espace pour aller à l'espace avant le numéro de port. Appuyez sur cw, tapez le nouveau numéro de port (par exemple 2222), et appuyez sur Esc.
Vérifiez la configuration :
sudo sshd -t
Aucune sortie signifie que la syntaxe est valide. Redémarrez le service :
sudo systemctl restart sshd
Avant de vous déconnecter, ouvrez une seconde session SSH sur le nouveau port pour vérifier que vous pouvez toujours vous connecter. Perdre l'accès SSH en changeant le port sans tester est une erreur fréquente.
Éditer un fichier Docker Compose
vim ~/myapp/docker-compose.yml
Les fichiers YAML sont sensibles à l'indentation. Les paramètres du .vimrc définis précédemment (tabulations de 2 espaces, expandtab) gèrent cela correctement. Si vous voyez des caractères de tabulation dans un fichier YAML, convertissez-les :
:%s/\t/ /g
Cela remplace toutes les tabulations par deux espaces. Sauvegardez et validez le fichier :
docker compose config --quiet
Aucune sortie signifie que le YAML est valide. En cas d'erreur de syntaxe, Docker Compose affiche le numéro de ligne. Allez directement à cette ligne dans Vim avec vim +42 docker-compose.yml (où 42 est la ligne de l'erreur).
Éditer un fichier unit systemd
sudoedit /etc/systemd/system/myapp.service
Après avoir sauvegardé les modifications d'un fichier unit systemd, rechargez le daemon :
sudo systemctl daemon-reload
Puis redémarrez le service et vérifiez :
sudo systemctl restart myapp
sudo systemctl status myapp
Vérifiez la ligne Active: dans la sortie du statut. Elle devrait afficher active (running). Si elle affiche failed, consultez les journaux :
journalctl -u myapp -n 20 --no-pager
Aide-mémoire Vim
Les dix commandes indispensables dès le premier jour :
| Commande | Action |
|---|---|
i |
Entrer en mode Insertion |
Esc |
Revenir au mode Normal |
:wq |
Sauvegarder et quitter |
:q! |
Quitter sans sauvegarder |
dd |
Supprimer la ligne |
u |
Annuler |
/text |
Chercher vers l'avant |
:%s/old/new/g |
Remplacer tout dans le fichier |
:sp file |
Diviser la fenêtre |
F2 |
Basculer le mode collage |
Pour la référence complète avec navigation, édition, mode visuel, buffers, splits, regex et raccourcis serveur, consultez notre Aide-mémoire Vim.
Quelque chose ne fonctionne pas ?
Vim s'est ouvert et je ne peux pas taper. Vous êtes en mode Normal. Appuyez sur i pour passer en mode Insertion.
Je vois -- INSERT -- mais mes frappes font des choses bizarres. Vous avez peut-être appuyé accidentellement sur Ctrl+s, ce qui gèle la sortie du terminal. Appuyez sur Ctrl+q pour dégeler.
Mon texte collé a une indentation en escalier. Activez le mode collage avec F2 ou :set paste avant de coller. Pensez à le désactiver après : F2 de nouveau ou :set nopaste.
Vim affiche << E45: 'readonly' option is set. >> Le fichier est en lecture seule. Quittez avec :q et rouvrez avec sudoedit /chemin/du/fichier.
J'ai fait une erreur et j'ai sauvegardé. Si le fichier est une configuration système, Vim a pu laisser une sauvegarde. Vérifiez la présence de filename~ dans le même répertoire. Vous pouvez aussi annuler après réouverture si vous avez configuré set undofile et set undodir=~/.vim/undodir dans votre .vimrc (créez d'abord le répertoire avec mkdir -p ~/.vim/undodir).
Avertissement de fichier swap : << .file.swp >> existe déjà. Une session Vim précédente a planté ou est encore ouverte. Si aucune autre session n'édite le fichier, choisissez (D)elete pour supprimer le fichier swap. Si vous avez désactivé les fichiers swap dans votre .vimrc (set noswapfile), cela ne se produira pas.
Prochaines étapes : Associez Vim à un multiplexeur de terminal pour que vos sessions d'édition survivent aux déconnexions. Consultez notre guide sur tmux ou celui sur GNU Screen. Pour les exemples de configuration Nginx de cet article, consultez le guide complet sur l'administration Nginx.
Copyright 2026 Virtua.Cloud. Tous droits réservés. Ce contenu est une création originale de l'équipe Virtua.Cloud. Toute reproduction, republication ou redistribution sans autorisation écrite est interdite.
Prêt à essayer ?
Déployez votre serveur en quelques secondes. Linux, Windows ou FreeBSD.
Voir les offres VPS