Bonjour ! Aujourd’hui, j’aimerais vous présenter Vim !

Qu’est-ce que Vim ?

Vim est un éditeur de texte, d’abord utilisé en ligne de commande, gratuit et open source. Il est disponible sur toutes les plateformes Unix/Linux, se veut “puissant”, et “rapide”. Pour cela, il part d’un constat simple: les développeurs codent rarement à partir de zéro. En effet, dans 99% des cas, les développeurs sont amenés à modifier du code déjà existant, en voulant appliquer un patch, corriger un bug, ajouter une nouvelle fonctionnalité, etc… C’est avec ce constat que Vim vient avec une philosophie : pouvoir d’abord se déplacer et éditer des fichiers très rapidement et éditer localement et efficacement.

Pour faire cela, il propose un environnement et des raccourcis clavier qui vont permettre à l’utilisateur de coder plus rapidement. Aussi, comme Vim est d’abord un éditeur utilisable en ligne de commande, donc pas besoin de posséder de souris ! En plus de faire gagner du temps, il épargne des troubles musculo-squelettiques liés aux mouvements incessants clavier-souris de la main et l’avant-bras.

Vous pouvez voir le dépôt github ici: github.com/vim/vim, ainsi que le site officiel de Vim ici: vim.org.

Les raccourcis clavier de l’éditeur Vim sont aussi émulés dans plein d’éditeurs de code (VSCode, Sublime Text…), ce qui permet d’avoir un apprentissage de Vim plus facile ! Il suffit juste de se renseigner et télécharger les plugins correspondant.

Vim est un éditeur de texte très déroutant à prendre en main. En effet, Vim utilise des conventions bien à lui. Oubliez les raccourcis de bases tel que “Ctrl-C”, “Ctrl-V”, “Ctrl-A” ou “Ctrl-W”, Vim lui, utilise des raccourcis beaucoup plus logiques.

Vim est un éditeur dit modal, c’est-à-dire que l’on va pouvoir changer de mode d’édition selon ce que l’on souhaite accomplir.

Le “mode spectateur” est le mode de base, et nous pouvons changer de mode avec les raccourcis clavier décrit ci-dessous.

Mon but ici n’est pas d’être exhaustif en raccourcis-clavier, car il en existe des milliers, mais juste de présenter un aperçu de la puissance de Vim.

Pour commencer, nous pouvons ouvrir Vim avec la commande vim nom-du-fichier à partir du terminal.

  • Pour quitter vim, nous pouvons écrire :q. (“q” pour “quit”)
  • Pour sauvegarder et quitter vim, nous pouvons écrire :wq (write and quit), ou :x (cette commande ne sauvegarde uniquement s’il y a eu des modifications dans le fichier)

Quelques fonctionnalités & raccourcis

Au début lorsque l’on ouvre Vim, nous sommes en mode “spectateur”. Ce mode permet de se déplacer dans un fichier très rapidement. Nous avons les raccourcis comme :

  • w (word) : permet de placer le curseur sur le mot suivant;
  • e (end) : permet de placer le curseur à la fin d’un mot;
  • b (back) : permet de placer le curseur sur le mot précédent;

Les utilisateurs de Vim aiment utiliser les raccourcis hjkl pour se déplacer (h = gauche ; j = bas ; k = haut ; l = droite). Cela évite d’excentrer sa main en appuyant sur les flèches en bas à droite du clavier.

Nous pouvons ajouter des numéros devant les commandes, par exemple: 3w, va effectuer 3 fois la commande w. 3w va donc “avancer de 3 mots” (“three words” en anglais).

Bien sûr, les numéros fonctionnent sur toutes les autres commandes vim quand cela est disponible.

  • ^ permet d’aller au début de la ligne

  • $ permet d’aller à la fin de la ligne

  • { permet d’aller au début d’un bloc;

  • } permet d’aller à la fin d’un bloc;

Ensuite, si nous voulons écrire / éditer du texte, il faut se placer dans le mode “insertion”, pour cela, nous pouvons utiliser les raccourcis suivant:

  • i (insert) : passer en mode insertion;
  • a (append) : passe en mode insertion, à droite du curseur;
  • <ESC> (echap) : repasse en mode spectateur;

Par exemple, iBonjour !<ESC> écrit “Bonjour !” dans l’éditeur.


Nous pouvons se déplacer très rapidement sur une ligne, avec:

  • f + <caractère> (find) : place le curseur sur le caractère souhaité;
  • t + <caractère> (to / unTil) : place le curseur à gauche du caractère souhaité;

Nous pouvons sélectionner du code avec v. Nous appuyons sur <ESC> pour repasser en mode spectateur.

Pour effectuer des modifications sur le code, nous avons:

  • d + <déplacement> (change) : Supprime le texte du curseur jusqu’à la commande de déplacement souhaitée. Exemple: d3w (delete three words), va supprimer le mot courant; di" (delete inner quote), supprime le texte à l’intérieur des guillemets. dd supprime toute la ligne;

  • c + <déplacement> (change) : A le même effet que d, mais passe l’utilisateur en mode insertion après la suppression. Exemple: cw (change word), va supprimer le mot courant tout en passant en mode insertion. cc change toute la ligne;

  • x : Supprimer le caractère sur lequel le curseur est. (“x” fait penser à une croix);

  • r <caractère> : Remplace le caractère sur lequel le curseur est par un autre caractère;

  • . : Refait la dernière opération effectuée;


Enfin, nous avons des raccourcis comme v, ou V qui permettent de passer en mode sélection si l’on veut être sûr avant de faire une manipulation.

En plus d’être logiques, tous les raccourcis présentés peuvent s’écrire en majuscule, ce qui correspond à une variante de la commande.

Maintenant que nous connaissons quelques raccourcis de base, nous pouvons nous attarder sur trois grosses fonctionnalités de Vim (bien sûr il en existe beaucoup plus, mais ceux-là sont les principaux).

Grosse fonctionnalité 1 : Les registres

Pour “copier-coller” du code, sans vim, nous utilisons le presse-papier. Vim est différent et fonctionne à l’aide de registres. Un registre dans vim est une zone dans la mémoire, et est définie par une lettre minuscule (de a à z).

  • y + <déplacement> (yank) : pousse le code dans un registre. Exemple: ye (yank end) va copier le mot courant. yy, ou Y copient toute la ligne;
  • p (paste) : colle le code présent dans le registre courant dans le fichier;

Pour copier dans un registre différent, nous avons:

  • " <registre> y : charge le registre, et y copie dedans. Exemple: "ayw: copie le mot courant dans le registre a;
  • " <registre> p : charge le registre, et colle dans le texte. Exemple: "ap: colle le mot courant dans le document;

Grâce à cela, plus besoin de revenir en arrière pour re-copier une information dans le presse-papier, ici nous pouvons copier plusieurs informations en même temps !

Grosse fonctionnalité 2 : Les marqueurs

Vim propose un système de marqueur : cela permet de sauvegarder un endroit du fichier et d’y revenir plus rapidement.

  • m <caractère> (mark) : place un marqueur dans le registre. Exemple ma: place un marqueur et le stocke dans le registre “a”;
  • ' <caractère>: va à la ligne où le marqueur est. Exemple: 'a nous emmène au marqueur “a”;
  • ` <caractère>: va à la ligne où le marqueur est. Exemple: `a nous emmène au marqueur “a”;

Cela sert surtout lorsque nous travaillons avec plusieurs fichiers ouverts en même temps, nous pouvons éditer sans avoir à scroller pour retrouver la fonction que l’on vient d’éditer.

Grosse fonctionnalité 3 : Les macros

Vim propose des macros : cela permet d’exécuter des opérations fastitueuses instantanément.

  • q <registre> <script> q : place dans le registre un script;
  • @ <registre> : exécute le script du registre;

Un registre est un caractère où l’on va sauvegarder la macro.

Exemple: qayypq: enregistre dans le registre a l’action yyp qui est: “copier la ligne courante et de la coller”. @a va exécuter la macro.

Nous pouvons aussi faire @@ pour rejouer la dernière macro que l’on a lancée.

Avec les macros, vous pouvez effectuer des opérations redondantes comme éditer et mettre dans un certain format des fichiers, de manière automatique.

Autres grosses fonctionnalités

Vim possède de nombreuses autres fonctionnalités que vous aurez le plaisir de découvrir tout au long de votre apprentissage.

Vim est très extensible, et de nombreux plugins développé par la communauté peuvent-être installés si jamais vous en trouvez le besoin.

Les points forts de Vim

Vim est un éditeur qui offre des raccourcis plus logiques et puissants. Toutes les actions que l’on réalise très souvent peuvent se faire uniquement au clavier. En plus de cela, Vim est open source. Il est très populaire, et est installé de base sur de nombreuses distributions linux. Si vous tapez la commande vimtutor, vous trouvez des exercices pour vous habituer aux nouvelles commandes de Vim !

Grâce à sa grande communauté, vous trouvez de nombreux aides-mémoires, forums, et livres disponibles en ligne.

Aussi, Vim est aussi très personnalisable. Vous pouvez faire vos propres fichiers de configuration dans un fichier ~/.vimrc, et installer de nombreux plugins pour combler tous vos besoins. Amix a réalisé sa propre configuration disponible ici : https://github.com/amix/vimrc.

Aussi, la communauté est très active et des forks sont disponibles, par exemple NeoVim https://github.com/neovim/neovim.

Enfin, pour sauter le cap plus facilement, vous pouvez utiliser une émulation de Vim dans votre éditeur de code favoris afin d’allier le meilleur des deux mondes (IHM + les raccourcis de VIM). C’est à vous de voir !

Je n’ai pas tout présenté, n’hésitez pas à regarder la documentation pour plus d’informations.

Les points faibles de Vim

Si peu de personnes utilisent Vim, c’est parce que l’outil est surtout fait pour les développeurs. Même si Vim possède des raccourcis logiques, il possède aussi une courbe d’apprentissage assez rude lorsque l’on ne connait pas (vous allez souvent regarder la documentation et chercher de l’aide sur les forums au début).

Vim n’est pas uniquement un ensemble de raccourcis clavier, mais une véritable philosophie.

Certes la courbe d’apprentissage est difficile, mais cela vaut la chandelle sur le long terme !

Mon avis

Vim est un outil que j’utilise au quotidien depuis maintenant plus de trois ans. Vim est un outil libre et open source, ce qui est un très bon point pour moi. Aussi, il est très populaire et est installé par défaut sur les distributions, donc plus besoin d’utiliser l’éditeur Nano maintenant !

Après une semaine d’utilisation quotidienne, j’ai réussi à retrouver mon ancienne rapidité. En deux semaines, j’ai vraiment commencé à utiliser le potentiel de Vim ! Vim possède de nombreuses fonctionnalités comme l’enchainement des raccourcis, les registres et les macros qui m’ont permis d’éditer d’énormes fichiers de plus de 250 000 lignes instantanément (logs, dump de base de données…).

Lorsque j’ai changé d’éditeur de texte, je n’ai pas eu besoin de re-mapper tous mes raccourcis : j’ai simplement utilisé ceux de Vim.

Si vous utiliser Vim sur le terminal, vous pouvez le faire tourner même sur de très petites configs.

Pour aller plus loin

Pour aller plus loin, je vous conseille ces ressources:


Articles recommandés