Maîtriser Vi en un clin d'œil
Mise à jour :
vi est un éditeur de texte minimaliste intégré à presque tous les systèmes Unix et Linux. Il peut paraître austère au premier abord, mais il devient vite un allié précieux une fois maîtrisé. Pourquoi ? Parce qu’il est toujours disponible, même sur les systèmes les plus dépouillés, sans interface graphique ni éditeurs modernes.
Apprendre à utiliser vi, c’est gagner en autonomie et en réactivité en situation critique. Pas besoin d’en faire votre éditeur principal, mais savoir l’utiliser peut littéralement vous sauver la mise.
Les deux modes principaux de vi
L’une des premières choses qui surprennent avec vi, c’est son fonctionnement en modes. Contrairement aux éditeurs classiques où l’on tape directement du texte, vi sépare les actions en trois modes principaux :
- Mode commande : pour naviguer et manipuler le texte
- Mode insertion : pour écrire du texte
- Mode Ex : pour exécuter des commandes
Ces deux modes permettent de travailler efficacement sans avoir à continuellement changer de contexte.
Mode commande
C’est le mode par défaut quand on ouvre vi. Ici, chaque touche est interprétée comme une instruction : déplacer le curseur, supprimer un mot, copier une ligne, etc.
Par exemple :
dd
supprime une ligne entièrex
efface un caractèreu
annule la dernière action
Astuce : Si vous ne savez plus dans quel mode vous êtes, appuyez sur Esc
.
Cela vous ramène toujours en mode commande.
Mode insertion
Pour écrire du texte, il faut passer en mode insertion. Plusieurs commandes permettent de le faire, selon où vous voulez commencer à écrire :
i
: insère du texte avant le curseura
: insère après le curseuro
: ouvre une nouvelle ligne en dessousO
: ouvre une nouvelle ligne au-dessus
Une fois dans ce mode, vous tapez normalement. Pour revenir au mode commande :
appuyez sur la touche Esc
.
Et le mode Ex ?
Il existe un troisième mode, plus discret : le mode Ex, activé en tapant :
en mode commande. Il sert à exécuter des commandes longues, comme
enregistrer le fichier (:w
), quitter (:q
), ou chercher/remplacer (:s
).
Navigation dans un fichier
Avec vi, il faut oublier la souris : tout se fait au clavier. Et c’est une bonne chose ! Une fois les commandes en tête, on gagne en vitesse et en précision. Voici comment se déplacer efficacement dans un fichier.
Déplacements de base
h
: gauche (←)l
: droite (→)j
: ligne suivante (↓)k
: ligne précédente (↑)
Ces touches peuvent sembler étranges au début, mais elles tombent naturellement sous les doigts avec un peu de pratique. Les touches fléchées sont aussi disponibles, mais elles sont moins efficaces.
Aller au début ou à la fin d’une ligne
0
(zéro) : aller au début de la ligne^
: au premier caractère non vide$
: à la fin de la ligne
Se déplacer par mots
w
: mot suivant (début)e
: fin du mot actuelb
: mot précédent (début)
Ajouter une majuscule (W
, E
, B
) permet de naviguer par mots séparés par
des espaces, utiles dans du texte ou des scripts shell.
Aller à une ligne précise
:42
: aller à la ligne 42gg
: aller en haut du fichierG
: aller à la dernière ligne
Sauts rapides
H
: aller en haut de l’écran visibleM
: aller au milieu de l’écranL
: aller en bas de l’écran
Utiliser les marques
Vous pouvez placer un repère dans le fichier avec m
suivi d’une lettre, par
exemple ma
. Pour y revenir plus tard, tapez 'a
.
Édition de texte
Dans vi, éditer un fichier ne se fait pas comme dans un éditeur graphique. Ici, chaque action est déclenchée par une commande clavier. Une fois ces commandes apprises, vous gagnerez en rapidité et en efficacité.
Insérer du texte
Pour ajouter du contenu, il faut passer en mode insertion :
i
: insérer avant le curseurI
: insérer au début de la lignea
: insérer après le curseurA
: insérer à la fin de la ligneo
: insérer une nouvelle ligne en dessousO
: insérer une nouvelle ligne au-dessus
Après avoir tapé votre texte, appuyez sur Esc
pour revenir au mode commande.
Supprimer du texte
Voici quelques commandes très utiles pour supprimer rapidement :
x
: supprime le caractère sous le curseurX
: supprime le caractère avant le curseurdw
: supprime un motdd
: supprime une ligne entièred$
: supprime jusqu’à la fin de la ligned0
: supprime jusqu’au début de la ligne
Modifier et remplacer
r
: remplace un seul caractèreR
: entre en mode remplacement (vous écrivez par-dessus le texte existant)cw
: change un mot (équivaut à supprimer + insérer)cc
: change toute la ligne
Annuler et répéter
u
: annule la dernière actionU
: annule toutes les modifications sur la ligne en cours.
: répète la dernière commande
Copier, couper, coller
Dans vi, les opérations de copie, coupe et collage reposent sur le principe des registres. On parle ici de “yanker” (copier), “delete” (couper) et “put” (coller). Ces actions se combinent très bien avec les mouvements appris précédemment.
Copier (Yank)
yy
: copie (yank) une ligne entièreyw
: copie un moty$
: copie depuis le curseur jusqu’à la fin de la ligney0
: copie depuis le curseur jusqu’au début de la ligne
On peut aussi copier plusieurs lignes avec un nombre :
5yy
Copie 5 lignes à partir de la ligne actuelle.
Couper (Delete)
Les commandes de suppression (comme dd
ou dw
) ne suppriment pas seulement :
elles enregistrent le contenu supprimé dans un registre temporaire, qu’on
peut ensuite coller.
dd
: coupe une ligned3w
: coupe trois motsd}
: coupe jusqu’au prochain paragraphe
Coller (Put)
p
: colle après le curseur ou la ligneP
: colle avant
Exemple :
ddP
Coupe la ligne actuelle et la colle au-dessus de l’endroit actuel.
Utiliser les registres
Chaque suppression ou copie est stockée dans un registre par défaut, mais il est aussi possible de nommer un registre :
"ayy # copie la ligne dans le registre a"ap # colle depuis le registre a
C’est pratique pour manipuler plusieurs morceaux de texte en parallèle.
Recherche et substitution
Travailler dans vi avec de longs fichiers, c’est souvent chercher une ligne
précise, une configuration, ou une valeur à modifier. Heureusement, vi
dispose de puissantes commandes de recherche et de remplacement,
accessibles depuis le mode commande ou le mode Ex (:
).
Rechercher un mot ou une expression
/mot
: cherche le mot vers le bas du fichier?mot
: cherche le mot vers le haut
Exemples :
/Listen
cherche toutes les occurrences de “Listen”.
Navigation dans les résultats
n
: aller à l’occurrence suivanteN
: aller à l’occurrence précédente
Très utile pour naviguer rapidement entre les occurrences d’un mot comme Port
,
PermitRootLogin
, etc.
Recherche avec des expressions régulières
vi supporte des motifs simples :
.
: n’importe quel caractère*
: zéro ou plusieurs occurrences^
: début de ligne$
: fin de ligne
Exemple :
/^#/
trouve les lignes qui commencent par un commentaire.
Remplacer du texte
La commande de base :
:s/ancien/nouveau/
remplace la première occurrence sur la ligne actuelle.
Pour remplacer toutes les occurrences sur la ligne :
:s/ancien/nouveau/g
Pour remplacer dans tout le fichier :
:%s/ancien/nouveau/g
Ajouter c
à la fin demande confirmation à chaque remplacement :
:%s/ancien/nouveau/gc
Sauvegarde et sortie de vi
Quand on débute avec vi, une des premières frustrations, c’est souvent : “Comment je sors d’ici ?”. Voici les commandes à connaître pour sauvegarder votre travail ou quitter l’éditeur, avec ou sans enregistrement.
Toutes ces commandes s’exécutent depuis le mode commande (appuyez sur Esc
avant si besoin), puis tapez :
pour entrer en mode Ex.
Sauvegarder le fichier
:w
: écrit (write) le fichier, sans quitter.:w nom_fichier
: enregistre sous un nouveau nom.
Exemple :
:w /etc/mon_backup.conf
Quitter vi
:q
: quitte (quit), mais uniquement si aucun changement n’a été fait.:q!
: quitte sans enregistrer les modifications.
Sauvegarder et quitter
:wq
: sauvegarde et quitte:x
: équivalent de:wq
, un peu plus “moderne”ZZ
(en majuscules, sans:
) : enregistre et quitte aussi
Fermer tous les fichiers (si plusieurs buffers)
:qa
: quitte tous les fichiers ouverts:qa!
: quitte tous les fichiers sans sauvegarder
Apprendre vi avec une démonstration
Je vous propose une démonstration animée (voir le GIF), nous allons illustrer le processus de création, édition et sauvegarde d’un fichier texte simple avec l’éditeur vi. C’est une séquence idéale pour les débutants qui veulent comprendre le fonctionnement de vi.
Objectif
Créer un fichier demo.txt
contenant du texte, et le sauvegarder correctement
en utilisant les trois modes fondamentaux de vi :
- Mode commande (par défaut)
- Mode insertion (édition du contenu)
- Mode Ex (pour les commandes comme
:wq
)
Étapes détaillées de la démonstration
-
Lancement de vi
Terminal window vi demo.txtCette commande ouvre (ou crée s’il n’existe pas) le fichier
demo.txt
dans l’éditeur vi. -
Passage en mode insertion
Terminal window iEn tapant
i
, on passe du mode commande au mode insertion, ce qui permet d’écrire du texte librement. -
Écriture de contenu
Hello, world!Une ligne de commentaire est ajoutée, puis le texte réel est saisi. C’est l’essence de la modification de fichier avec vi.
-
Retour en mode commande
[Esc]En appuyant sur
Esc
, on quitte le mode insertion pour revenir au mode commande. C’est essentiel avant d’exécuter une commande d’enregistrement. -
Passage au mode Ex et sauvegarde
Terminal window :wq:
ouvre le mode Ex,w
enregistre (write),q
quitte (quit). La combinaison:wq
est la manière classique de sauvegarder et sortir de vi.
Ce que vous avez appris grâce à cette démonstration
- Lancer vi sur un nouveau fichier
- Passer entre les différents modes (commande, insertion, Ex)
- Éditer du texte simplement
- Enregistrer et quitter correctement
- Vérifier le contenu du fichier avec une commande shell
Cette démonstration montre le cycle complet de travail avec vi. Une fois cette séquence maîtrisée, vous êtes capable d’éditer n’importe quel fichier de configuration sur un système Linux minimal.
Les premières commandes essentielles à retenir
Lors de la démo, on a utilisé plusieurs commandes parmi les plus importantes de vi. Voici celles que vos devez retenir pour débuter :
-
Mode insertion (pour écrire) :
-
i
: insérer avant le curseur -
a
: insérer après le curseur -
o
: nouvelle ligne en dessous -
O
: nouvelle ligne au-dessus -
yy
: copier une ligne -
yw
: copier un mot -
p
: coller après le curseur -
P
: coller avant le curseur -
dd
: supprimer une ligne -
dw
: supprimer un mot -
u
: annuler la dernière action -
r
: remplacer un caractère -
R
: remplacer plusieurs caractères -
Pour sortir du mode insertion : appuyer sur
Esc
-
Mode Ex (pour sauvegarder/quitter) :
-
:w
: enregistrer -
:q
: quitter -
:wq
ou:x
: enregistrer et quitter -
:q!
: quitter sans enregistrer
🧠 Conseil : Mémorisez juste ces 15 commandes et vous serez déjà capable d’éditer n’importe quel fichier texte en urgence !
Personnalisation minimale de vi
vi est un éditeur minimaliste : pas de menu, pas d’interface graphique… mais quelques réglages simples peuvent le rendre plus agréable à utiliser. Même si vi n’offre pas autant de possibilités que ses clones modernes, il reste possible d’ajuster son comportement.
Modifier des options en session
Vous pouvez utiliser la commande :set
pour activer ou désactiver certaines
options temporairement, le temps que vi reste ouvert.
Voici quelques options utiles :
:set number
: affiche les numéros de ligne:set nonumber
: les désactive:set ignorecase
: rend les recherches insensibles à la casse:set noignorecase
: remet la recherche sensible à la casse:set autoindent
: active l’indentation automatique:set tabstop=4
: définit la largeur des tabulations
Exemple :
:set number autoindent tabstop=2
Voir les options actuelles
Tapez :set
sans argument pour afficher les réglages actifs.
Limites de personnalisation
vi n’utilise pas de fichier de configuration comme .vimrc
(qui est propre
à vim). Les options que vous changez ne sont pas conservées entre les
sessions. Il n’est donc pas possible de personnaliser vi de manière
permanente, sauf en utilisant un clone comme vim (ce qu’on abordera dans le
chapitre suivant).
Limitations de vi et versions améliorées
vi est solide, rapide, toujours présent… mais il a aussi ses limites. Conçu à l’origine dans les années 70, il ne répond plus toujours aux besoins modernes des développeurs ou administrateurs.
Ce que vi ne permet pas
- Pas de coloration syntaxique
- Pas d’annulation multiple
- Pas d’édition multi-fichier intuitive
- Pas de complétion de commande
- Pas de support direct des plugins ou extensions
- Personnalisation très limitée, pas de fichier de configuration
Dans les environnements modernes, ces fonctionnalités sont souvent indispensables.
Les principales versions améliorées
Heureusement, plusieurs éditeurs ont repris la base de vi pour l’enrichir. Voici les plus connus :
- vim (Vi IMproved) : le plus populaire, avec des milliers de plugins, une
configuration avancée via
.vimrc
, et une communauté très active. - nvi : une version plus fidèle à l’original mais avec quelques améliorations internes.
- elvis : supporte la navigation en fenêtres et la coloration syntaxique.
- neovim : un fork moderne de vim, conçu pour être plus modulaire et performant.
Comment savoir si vous utilisez vim ou vi ?
Tapez la commande suivante :
vi --version
Si vous voyez une mention de VIM - Vi IMproved, c’est que vous utilisez
vim (souvent le cas sur les distributions Linux récentes, même avec la
commande vi
).
Contrôle de connaissances
Pourquoi ce contrôle ?
Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.
🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.
🎯 Pour réussir, vous devez obtenir au moins 80% de bonnes réponses.
💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.
Bonne chance ! 🚀
Conclusion
Si vous avez du mal à vous habituer à vi, ne vous découragez pas. C’est un outil puissant, mais il faut un peu de temps pour s’y habituer. La documentation officielle est très complète et vous y trouverez de nombreux exemples.
Si vous cherchez un éditeur puissant pour automatiser vos tâches, coder ou gérer plusieurs fichiers avec confort, alors passer à vim ou neovim est une évolution naturelle. Mais savoir utiliser vi, c’est s’assurer de toujours avoir un outil fiable sous la main, partout.