Vim
| Fiche express | |
|---|---|
| Domaine | Éditeur de texte en mode texte (terminal) |
| Commande | vim / vi
|
| Contexte | Présent (ou installable) sur quasiment tout système Unix/Linux — indispensable pour éditer un fichier en SSH sans environnement graphique |
| Config utilisateur | ~/.vimrc
|
| Config globale | /etc/vim/vimrc (Debian/Ubuntu)
|
Vim (Vi IMproved) est un éditeur de texte en ligne de commande, amélioration de l'éditeur historique vi. Il fonctionne entièrement au clavier, sans souris, ce qui le rend particulièrement adapté à l'édition de fichiers de configuration à distance via SSH. Son principe central est la séparation entre plusieurs modes : un mode où le clavier sert à naviguer et manipuler le texte (normal), un mode où il sert à écrire du texte (insertion), et un mode de sélection (visuel).
Modes
Vim démarre toujours en mode normal. C'est le mode central : les touches n'insèrent pas de texte, elles servent à se déplacer, supprimer, copier/coller, lancer des commandes.
- Mode normal — mode par défaut au lancement, touches = commandes (déplacement, suppression, copie...) ; on y revient toujours avec
Échap. - Mode insertion — pour taper du texte comme dans un éditeur classique ; on y entre depuis le mode normal avec
i(insérer avant le curseur),a(après le curseur),o(nouvelle ligne en dessous),O(nouvelle ligne au-dessus). - Mode visuel — pour sélectionner du texte avant d'appliquer une commande (copier, supprimer, indenter...) ; on y entre depuis le mode normal avec
v(sélection caractère par caractère),V(sélection ligne par ligne),Ctrl+v(sélection en bloc rectangulaire). - Mode commande — pour les commandes de type
:wq,:%s/..., etc., accessible depuis le mode normal en tapant:.
Dans tous les cas, Échap ramène au mode normal — c'est le réflexe de base à connaître avant tout le reste.
Commandes de base indispensables
Quitter
:w " enregistrer (write)
:q " quitter (échoue s'il y a des modifications non enregistrées)
:wq " enregistrer puis quitter
:x " enregistrer puis quitter (n'écrit que si le fichier a été modifié)
:q! " quitter sans enregistrer, en ignorant les modifications
ZZ " équivalent de :wq en mode normal (sans les deux-points)
Déplacement (mode normal)
h j k l " gauche / bas / haut / droite (équivalent des flèches)
0 " début de la ligne
$ " fin de la ligne
gg " début du fichier
G " fin du fichier
:42 " aller à la ligne 42
w / b " mot suivant / mot précédent
Édition (mode normal)
dd " supprimer (couper) la ligne courante
yy " copier (yank) la ligne courante
p " coller après le curseur (ou après la ligne courante)
P " coller avant le curseur
x " supprimer le caractère sous le curseur
u " annuler la dernière modification
Ctrl+r " rétablir (redo)
. " répéter la dernière modification
Ces commandes se combinent avec un préfixe numérique et un mouvement : 3dd supprime 3 lignes, 5yy en copie 5, d$ supprime jusqu'à la fin de la ligne.
Recherche et remplacement
/motif " rechercher "motif" vers le bas du fichier
?motif " rechercher "motif" vers le haut du fichier
n " occurrence suivante (même sens que la recherche)
N " occurrence précédente
:%s/x/y/g " remplacer tout "x" par "y" sur toutes les lignes du fichier
:%s/x/y/gc " idem, avec confirmation ligne par ligne (oui/non/tout)
:1,10s/x/y/g " remplacer uniquement entre les lignes 1 et 10
Le % désigne l'ensemble du fichier (toutes les lignes) ; sans lui, :s/x/y/g ne s'applique qu'à la ligne courante.
Configuration persistante
La configuration de vim est lue à chaque lancement depuis deux niveaux, cumulables : une configuration globale pour tous les utilisateurs de la machine, et une configuration propre à chaque utilisateur qui vient la compléter ou la surcharger.
- Globale (tous les utilisateurs) :
/etc/vim/vimrcsur Debian/Ubuntu (ou/etc/vimrcsur RHEL/CentOS). - Utilisateur (prioritaire, propre à chaque compte) :
~/.vimrc.
Un exemple classique sur Debian : le fond sombre par défaut est souvent désactivé après une réinstallation ou une mise à jour, et la coloration syntaxique peut être commentée dans /etc/vim/vimrc. Pour corriger ça de façon persistante :
vim /etc/vim/vimrc # config globale, s'applique à tous les utilisateurs
set background=dark " adapte les couleurs à un fond de terminal sombre
syntax on " active la coloration syntaxique
Pour ne changer la couleur que ponctuellement, dans une session en cours, sans toucher à un fichier de config, la même directive peut se taper directement en mode commande dans vim : :set bg=dark.
D'autres réglages usuels à ajouter dans ~/.vimrc :
set number " afficher les numéros de ligne
set expandtab " remplacer les tabulations par des espaces
set tabstop=4 " largeur d'une tabulation affichée
set shiftwidth=4 " largeur d'une indentation (>> / <<)
set hlsearch " surligner les résultats de recherche
Coloration syntaxique
La commande syntax on active la coloration syntaxique (mots-clés, chaînes, commentaires...) selon le type de fichier détecté par l'extension. Elle peut se taper ponctuellement en mode commande (:syntax on) ou être placée dans ~/.vimrc//etc/vim/vimrc pour être permanente. Sur certaines installations Debian minimales, cette ligne est présente mais commentée dans /etc/vim/vimrc — il suffit de la décommenter pour l'activer pour tous les utilisateurs.
Vi, l'ancêtre historique
vi est l'éditeur historique dont vim est l'évolution (Vi IMproved). Il fait partie de la norme POSIX et reste présent par défaut sur pratiquement tous les systèmes Unix/Linux, même les plus minimalistes où vim n'est pas installé — c'est le filet de sécurité garanti pour éditer un fichier quand rien d'autre n'est disponible. Sur beaucoup de distributions, la commande vi est d'ailleurs un simple alias ou lien symbolique vers vim lancé en mode compatibilité, mais un vi minimal (souvent busybox vi ou une variante BSD) peut se retrouver seul présent sur des systèmes très allégés (conteneurs, systèmes embarqués). Les modes et commandes de base (normal/insertion, dd, yy, p, :wq, :q!) sont communs aux deux, ce qui rend les réflexes vim directement transposables sur un vi minimal.