Comment utiliser Vim sur un VPS Linux

17 min de lecture·Matthieu·server-administrationsshtext-editorlinuxvim|

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 ((, {, [)

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 :

  1. Appuyez sur F2 (si vous avez configuré pastetoggle comme indiqué plus haut) ou tapez :set paste
  2. Passez en mode Insertion avec i
  3. Collez votre texte (Ctrl+Shift+V ou clic droit dans votre terminal)
  4. Appuyez de nouveau sur F2 ou 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 :

  1. sudo vim exécute Vim en tant que root. N'importe quelle commande Vim comme :!bash lance un shell root. Sur les serveurs multi-utilisateurs, c'est un risque d'élévation de privilèges.
  2. sudoedit pré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