Vincent Ferries bio photo

Vincent Ferries

Apprenti artisan logiciel polyglotte

CV Email Twitter Github

Vim

Vim

Cela faisait bien longtemps que Vim était sur ma pile des trucs à apprendre. Celle qu’on est sensé dépiler au moins une fois l’an pour les bonnes résolutions et qui restent toujours entassées. J’avais déjà commencé à me confronter aux concepts de base, avais fait les tous premiers tutoriaux et m’en étais arrêté là. J’ai fini par déjà réussir ma transition quasi complète vers Linux (je n’utilise plus Windows que quand j’y suis vraiment obligé pour le boulot). Je vous dresserai peut-être un jour la liste de tout ce qui encombre cette pile si j’en ai le courage, j’ai pour habitude de lister ce genre de choses, ça aussi il y a des chances que je vous en reparle bientôt.

Tu es maso ?

Pas du tout, par contre je suis convaincu depuis très longtemps de la puissance d’un éditeur de texte tel que Vim. Force est de constater que je passe le plus clair de mon temps dans un éditeur texte ou dans un IDE.

Par où commencer ?

Le plus facile selon moi pour apprendre les toutes premières commandes, c’est d’aller sur le site Vim adventures. Vous apprendrez surtout les déplacements dans un petit jeu. Attention, seuls les 3 premiers niveaux sont gratuits, la suite est payante et le pricing me semble quelque peu curieux (25$ les 6 mois avec uniquement une dizaine de niveaux, pas dit que je me laisse tenter). Si vous y survivez, il reste tout plein d’autres ressources, que j’ai testées pour vous et que je vous livre ici même :

  • Open Vim : assez facile et très directif, mais un premier pas dans la bonne direction.
  • Vim Genius : On vous dit l’action qu’on cherche à effectuer et vous devez taper les caractères nécessaires. La répétition m’aide à assimiler les commandes, pas trop mal mais trop court et pas assez diversifié.
  • Vim tips : des concepts un peu plus avancés. Un petit guide pour la suite.
  • Un petit article avec les bases : assez clair et représente une bonne partie des usages.
  • Un cours sur Open Classroom

Ensuite, il y a deux autres liens qui méritent de plus amples explications :

  • Vim golf : Vim Golf est un site avec des petits concours de type code golf. Le principe est de transformer un texte d’une version A à une version B en le moins de caractères possibles en utilisant Vim. Le site et le concept sont géniaux, mais j’ai quand même un gros reproche à y faire : il n’y a pas de mécanisme de gestion de la difficulté des transformations. Ce n’est donc pas évident pour un novice de se lancer dans le grand bain…
  • Vim pour les humains : là on parle d’un bouquin, mais celui-ci est publié à prix libre. Dans ce genre de cas, en général j’ai tendance à le prendre gratuitement et à donner des sous si cela m’a été utile et m’a plu. A voir donc, je n’ai pas encore lu les 60 pages dont il est composé.

Les bases

Modes

Vim est basé sur les modes d’édition. En mode normal, toutes les touches sont des commandes et on peut les combiner pour se déplacer efficacement dans le fichier. On peut se rendre à une ligne donnée (par exemple la 30ème ligne avec 30G), se déplacer d’un mot à droite avec w, aller à la fin du mot avec e, supprimer avec d. Toutes ces commandes se composent, ainsi d3w supprime les 3 prochains mots. Mais il existe d’autres modes, le mode insertion i, le mode commande : qui permet de taper des commandes spécifiques à vim (dont du shell) ou encore le mode visualisation (pour faire des sélections) v. On peut repasser en mode normal à tout moment en appuyant sur Esc.

Déplacements

On se sert en mode normal des touches h, j, k et l pour se déplacer à gauche, en bas, en haut ou à droite. On peut là encore combiner avec les nombres pour se déplacer d’un nombre de lignes ou de caractères définis.

Dans les mots

Les 3 commandes principales pour se déplacer de mot à mot sont :

  • w passe au début du mot suivant
  • e passe à la fin du mot
  • b passe au mot précédent

On peut aussi utiliser 0 pour aller en fin de ligne, $ pour la fin, ^ pour le premier caractère non espacement de la ligne et des centaines d’autres commandes que je ne vous ferai pas l’affront de lister ici.

Les bienfaits

Pourquoi s’embêter autant à apprendre un truc dont les commandes semblent aussi ésotériques au premier abord ? Simplement parce que cet éditeur fait plus que résister alors qu’il a des dizaines d’années. Il a été conçu pendant une période ou les souris étaient inexistantes et est donc particulièrement adapté à l’utilisation clavier pure. De plus, quand on se retrouve sur un serveur distant, c’est l’un des rares outils qu’on est quasiment sûr d’avoir à notre disposition partout. Et puis ça sert quel que soit le langage de programmation qu’on est en train de manipuler, pour écrire simplement du texte, manipuler des fichiers JSON et j’en passe. Un vrai couteau Suisse. Et puis pour ceux qui y ont pris goût, il existe des plugins Vim pour la plupart des IDE récents : Idea Vim sur IntelliJ Idea, Vrapper sur Eclipse…

Mon objectif

En ce qui concerne les buts que je me suis fixé, je vise d’être parfaitement à l’aise sur Vim d’ici à la fin de l’année. Je compte l’utiliser quasi exclusivement d’ici là (même dans mes IDE dès que je le peux) et compte bien me frotter à la configuration et aux nombreux plugins disponibles. C’est d’ailleurs déjà le cas comme vous devez vous en douter, j’édite désormais mes posts de blog sous vim. Je ne me sentirai plus jamais dépaysé dans un coding dojo quand on me sortira vim.

Et pour aller plus loin ?

Jean-Marie, un des amis qui est supposé faire le pari du “un post de blog par jour” et ne s’y est pas trop tenu jusqu’à présent est un fanatique de Vim. Il vous livre ses astuces sur son blog.

Antoine, un des membres du Software Craftsmanship Toulouse avait lancé des soirées intitulées TupperVim, mais aux dernières nouvelles, il avait mis en pause par manque de participants, n’hésitez surtout pas à le contacter. M’est avis qu’il en serait ravi.