Pourquoi j'utilise VIM et pourquoi vous ne devriez pas l'utiliser

J'utilise VIM depuis presque une quinzaine d'années maintenant et je n'ai jamais eu envie de changer d'éditeur de texte depuis que je l'ai découvert. Certains trolls diront que c'est par ce que je n'ai jamais réussi à en sortir, mais ils ont tort, je peux le quitter quand je veux, il me suffit de redémarrer ma machine pour ça ! 😜️ [Voilà, maintenant que la blague de :q éculée est faite, on peut passer à la suite...]

Ce qui me fait bien rire, c'est que ceux qui me font cette remarque (coucou les collègues ✌️) sont bien souvent les mêmes qui changent d'éditeurs de texte régulièrement en fonction des différentes « modes ». Je les ai ainsi vus passer de Sublime Text à Atom, puis à Visual Studio Code, avec parfois un passage par un IDE de chez IntelliJ. Alors attention hein, je n'ai rien contre ces éditeurs, ils sont tous excellents. Par contre je me dis que quand on a trouvé l'éditeur qui nous convient et qu'on a pris la peine de réellement le maîtriser, on devrait être moins enclin à en changer. 🙃️

Quoi qu'il en soit, moi j'utilise VIM, et je vais vous présenter les grands principes qui régissent cet éditeur et qui font que je l'utilise au quotidien. Car si la plupart des développeurs en ont entendu parler (voire même l'on « subit » au détour d'une commande « git commit » 😉️), beaucoup le voient comme un vieux truc poussiéreux et compliqué et n'ont aucune idée de comment il peut bien fonctionner.

Capture d'écran de VIM

Le présent article en cours d'édition dans VIM #inception

VIM, un éditeur modal

Avant d'aborder VIM, parlons un peu des autres éditeurs de textes. Les éditeurs de textes « classiques » sont tous centrés autours du même paradigme : l'insertion de texte. On ouvre le programme et on peut commencer à écrire. Les autres fonctionnalités sont construites autour de ça, à base de boutons dans l'interface, de raccourcis claviers, etc. Ce fonctionnement est tellement répandu que l'on a du mal à imaginer qu'il puisse exister autre chose. Et pourtant, il existe des éditeurs de texte, comme VIM, qui sont différents.

VIM est un éditeur de texte modal. Quand on le lance, on est dans un mode, appelé « mode NORMAL », qui ne permet pas d'insérer de texte (WTF ? 🤯️), mais qui permet de naviguer dans le document (on peut par exemple se rendre à la fin du fichier en tapant « G », retourner au début en utilisant « gg » ou ouvrir le fichier dont le nom se trouve sous le curseur à l'aide de « gf »). Ce mode permet également de manipuler le texte déjà présent dans le fichier (ainsi on peut supprimer un paragraphe en tapant « dip » ou passer un mot en majuscule avec « gUiw »).

Si on veut ajouter du texte, il faut passer en « mode INSERTION ». Une fois dans ce mode, VIM se comporte comme un éditeur de texte classique : quand on appuie sur les touches du clavier, les caractères correspondants sont insérés dans le document. Il existe plein de façons de passer en mode INSERTION, tout dépend de ce que l'on cherche à accomplir. Par exemple, si on appuie sur « i » depuis le mode NORMAL, on entre en mode INSERTION à l'endroit où se trouve le curseur. Mais on peut également utiliser « ci" », ce qui aura pour effet de supprimer le contenu de la chaîne de caractères se trouvant sous le curseur et de nous placer en mode INSERTION à l'intérieur de celle-ci (entre les deux guillemets quoi) afin de remplacer rapidement son contenu.

Exemple de passage en mode INSERTION avec « ci" »

Il existe également un « mode COMMANDE », qui s'active en appuyant sur « : » depuis le mode NORMAL et qui permet en suite d'entrer diverses commandes. Par exemple, si je tape « :10,20sort », VIM va me trier les lignes 10 à 20 du fichier par ordre alphabétique. C'est également depuis ce mode qu'on peut quitter VIM à l'aide de la célèbre commande « :q » (eh oui, il n'y a pas besoin de redémarrer le PC pour quitter l'éditeur en fait 😜️).

Exemple d'utilisation du mode COMMANDE avec « :1,5sort »

Il existe encore plusieurs autres modes, certains très utiles, comme le « mode VISUEL », et d'autres plus obscures (coucou le « mode EX » qui sert à rien !), mais on ne va pas en parler ici, on n'est pas là pour faire un cours de VIM. 😉️

VIM, une langue avec sa grammaire et son vocabulaire

Je vous ai montré quelques exemples de commandes dans la section précédente ; elles ont dû vous sembler bien obscures si vous n'avez jamais utilisé cet éditeur. En réalité elle sont très faciles à comprendre une fois qu'on connaît la grammaire et le vocabulaire de VIM. Pour vous expliquer ça, on va disséquer la commande « dip » qui supprime le paragraphe sous le curseur :

  • Ici, « d » est le verbe d'action et signifie delete (supprimer).
  • Ensuite, « i » est un modificateur qui signifie inside (dedans, à l'intérieur). Il va permettre de préciser ce qui va suivre.
  • Enfin, « p » est le sujet (dans le cas présent il s'agit de ce que l'on appelle un text object), et signifie paragraph.

On peut donc construire la phrase suivante : « delete inside paragraph », soit « supprimer l'intérieur du paragraphe ».

De la même façon, la commande « gUiw » vue précédemment se traduit par « go uppercase inside word » (mettre en majuscules l'intérieur du mot) et la commande « ci" » signifie « change inside double-quotes » (modifier ce qui se trouve entre les guillemets doubles).

Il y aurait de quoi écrire un livre entier sur le vocabulaire et la grammaire de VIM, et je suis moi-même loin de tout connaître, mais le peu que je vous ai montré devrait suffire à ce que vous vous rendiez compte d'à quel point c'est puissant. Ce qui est le plus intéressant avec tout ça, c'est que c'est comme apprendre une langue étrangère : à chaque fois que l'on apprend un nouveau mot, on peut immédiatement l'utiliser dans plein de contexte différents, ce qui permet de faire de nouvelles phrases (dans notre cas cela nous ouvre tout un éventail de nouvelles commandes).

Pourquoi je continue à utiliser VIM depuis si longtemps ?

En écrivant cet article, la réponse à cette question m'a semblé évidente : j'ai appris à parler sa langue, tout simplement. Là où vous ne voyez que des commandes incompréhensibles, moi je vois des phrases limpides. Il ne faut pas aborder les commandes de VIM comme des raccourcis claviers qu'il faudrait connaitre par cœur, mais comme une langue qu'il faut apprendre à parler.

Je n'ai pas envie de changer d'éditeur, tout simplement par ce qu'aucun autre ne me permet de manipuler du texte avec autant de précision. Aucun éditeur de texte ne me fournit un langage permettant de lui parler pour qu'il fasse exactement ce que je lui demande. Enfin, aucun éditeur ne m'a permis de faire autant de chose au clavier sans me forcer à apprendre des raccourcis claviers à rallonge (je n'ai que dix doigts moi, n'est-ce pas Emacs 😁️). Ceci dit, si vous êtes un adepte de la souris, sachez que ça fait bien longtemps que cette dernière est supportée par VIM, donc oui, il est possible de sélectionner du texte ou de redimensionner les vues splitées avec cette dernière.

Au final VIM est un éditeur très puissant et agréable à utiliser au quotidien. Il est extrêmement personnalisable et totalement scriptable. Il est de plus soutenu par une énorme communauté, qui a rédigé un nombre impressionnant d'articles, de documentations et bien sûr de plugins pour à peu près tout et n'importe quoi (par ce que oui, vouloir utiliser VIM sans aucun plugin, c'est vraiment aimer souffrir... mais on ne juge pas hein 😜️).

Pourquoi vous ne devriez pas utiliser VIM

Je ne vais pas vous mentir : apprendre à utiliser VIM est long et difficle (en comparaison avec les autres éditeurs hein, c'est pas la mort non plus 🙃️), et cela demande de faire quelques efforts (ouch ! 😥️). Apprendre VIM, c'est apprendre une nouvelle langue : au début on manque de vocabulaire et on a du mal à construire des phrases qui ont un sens, il faut donc accepter que pendant un certain temps, on va galérer et perdre en productivité. Mais les choses s'améliorent avec le temps et on finit par être plus à l'aise. Parmi ceux qui ont la curiosité de s'essayer à VIM, beaucoup abandonnent au bout de quelques jours : c'est normal, cet éditeur est atypique et ne peut pas convenir à tout le monde.

Quoi qu'il en soit, cet article n'a pas pour but de vous décourager d'utiliser VIM (comment ça mon titre est pute-à-clic ? 😜️), mais il n'a pas non plus pour but de vous convaincre de l'utiliser. Un éditeur de texte est un outil, pas une religion. Je ne m'intéresse pas aux guerres de clochers : je me fiche donc de savoir quel éditeur est supposé être le meilleur. Les gens qui utilisent d'autres logiciels ne sont pas des « hérétiques » qu'il faudrait à tout prix convertir, ils utilisent simplement l'outil qui répond à leurs besoins et avec lequel ils sont à l'aise, et c'est très bien comme ça. [Si toutefois vous rencontrez des développeurs qui bossent avec notepad.exe, faites quelque chose pour leur venir en aide, abrégez leurs souffrances ! 😧️]

Au final, j'ai écrit cet article par ce que j'avais envie de démystifier VIM : ce n'est pas un truc obscur que seuls quelques barbus adeptes de la magie noire peuvent utiliser. C'est un éditeur de texte qui fonctionne de manière différente de ce à quoi on est habitué, et je voulais vous faire découvrir son approche particulière de l'édition de texte.

J'ai également écrit cet article pour vous donner un conseil : ne suivez pas les modes. Trouvez l'éditeur de texte qui vous convient, on s'en fout qu'il soit hype ou non, et surtout, maîtrisez-le, vraiment. Je vois trop de développeurs qui n'exploitent pas du tout le potentiel de leurs outils. On a la chance d'avoir à disposition de nombreux éditeurs différents, tous excellents, il faut apprendre à s'en servir et à utiliser toute la puissance qu'ils proposent !

J'espère que cet article aura pu vous apprendre quelques trucs ou tout du moins qu'il vous poussera à tirer le meilleur des outils que vous utilisez au quotidien. D'ailleurs, ça m'intéresse : Quel éditeur de texte utilisez-vous, et pourquoi ? De quelles fonctionnalités ou de quelle approche particulière dispose-t-il ? [c'est pas noté hein, ya pas de bonne ou de mauvaise réponse ! 😜️]

:wq