Vim, première approche

logo vimCe post est destiné aux personnes connaissant peu, ou pas, l'éditeur Vim. J'ai voulu expliquer en gros ce qu'est Vim, et pourquoi il reste mon éditeur de prédiléction depuis que j'ai appris à m'en servir.

Défauts

Vim n'est pas intuitif

La blague récurrente qui dit

"Comment générer une suite de caractères aléatoires ?"
"C'est simple, il suffit de mettre un débutant face à Vim et de lui demander de quitter."

n'est pas totalement infondée. Toutes les touches du clavier sont des raccourcis, et ceux-ci sont plutôt très différents des raccourcis des éditeurs usuels. Il est donc normal de se retrouver un peu perdu quand on ne le connaît pas.

La barrière d'entrée est donc très élevée. Il faut investir un certain temps à l'apprentissage avant de pouvoir être à l'aise sous Vim. Cette image parle d'elle même :

Editors learning curve

Les options par défaut sont loin d'être optimales

Vim est capable de faire énormément de choses, mais il est configuré par défaut de manière très conservatrice, pour rester compatible avec son ancêtre Vi.

Des choses aussi basiques que l'affichage du numéro de ligne, la coloration syntaxique, la recherche incrémentale insensible à la casse, la coloration des résultats de recherche, ou le support de la souris sont désactivées par défaut. Cela peut donc induire un novice à considérer vim comme un éditeur simpliste, alors qu'il suffit simplement d'activer ces options pour les utiliser.

Avantages

Vim est efficace

Allant de pair avec sa difficulté de prise en main, Vim est extrêmement efficace: je ne connais pas d'éditeur permettant de faire autant de choses en aussi peu de touches. Il y a même une compétition sur ce principe. Il permet de se passer totalement de la souris, et d'avoir tous les raccourcis claviers à portée de main. On évite le changement de contexte clavier/souris qui fait perdre beaucoup de temps. De plus, il est bardé de fonctionnalités que l'on retrouve très rarement, voir pas du tout, chez les autres éditeurs.

Vim est répandu sur les serveurs

Vim est installé par défaut sur une grande majorité de distributions Linux / Unix, ainsi que OS X (même si c'est souvent une version minimale). C'est un outil usuel pour toute personne passant un minimum de temps sur des consoles par ssh. Le maîtriser apporte un comfort indéniable. Au minimum, il faut connaître ce qui est enseigné par la commande vimtutor.

Vim est un logiciel libre, et est toujours maintenu

Même s'il existe depuis plus de vingt ans, vim est toujours maintenu, des patchs sont régulièrement intégrés. C'est visible sur github.

Vim est extrêmement personnalisable

En plus des centaines d'options disponibles de base, il existe des milliers de plugins qui comblent des tas de besoins différents.

Vim est modal

La plupart des raccourcis claviers des éditeurs sont composés d'un modificateur (Alt, Control, Shift, …) et d'une lettre. Vim propose un principe simple et génial: proposer un comportement différent suivant son mode d'opération. Les principaux modes sont normal, insertion, et command.

Le mode insertion est le comportement d'un éditeur classique : les touches pressées sont insérées dans le document.

En mode normal, chaque touche du clavier est une commande. Soudainement, vous avez sous les doigts une manette spécialisée dans l'édition de texte, avec une centaine de boutons. Il y a plusieurs manières de passer en mode insertion, la plus classique étant de taper i. Mais il est aussi possible de faire cwnouveau_motEchap sur un mot pour le remplacer par nouveau_mot.

Les commandes sont logiques

Le principal intérêt de ce système, est que les commandes peuvent être combinées, formant un langage. La plupart des commandes peuvent être divisées en 2 catégories : les commandes d'éditions (les verbes) et les commandes de mouvement (les sujets). w se déplace d'un mot, donc si je le précède de d (delete), ça va supprimer le mot. Si à la place de d j'utilise y (yank), cela va copier le mot à la place.

Cela permet des milliers de combinaisons, et facilite l'apprentissage : si j'apprends une nouvelle commande de déplacement, par exemple ) qui se déplace d'une phrase, je vais pouvoir l'associer à toutes les commandes d'édition que je connais. d) va supprimer une phrase, et y) va copier une phrase. De même, si j'apprends une nouvelle commande d'édition c (change, supprime et passe en mode insertion), je peux l'associer à toutes les commandes de mouvement: cw, c), …

Je mentionne juste ma commande préférée pour vous donner une idée de la puissance du truc. . va répéter la dernière commande d'édition. Ça inclue le texte tapé, par exemple cwmieux!Echap va remplacer le mot sous le curseur par mieux!. Après cela, il suffit de positionner le curseur sur un autre mot et d'appuer sur . pour le remplacer par mieux!. Je vous laisse imaginer les possibilités.

Pour finir

Vu qu'aujourd'hui c'est Pâques, je suis obligé de mentionner un Easter egg : essayez :h 42 Entrée pour voir ;-)

Publié le 05 April 2015 à 22:04

Ajouter un commentaire