Idées en vrac

Qu'est-ce que tu veux que je te dise ? C'est ton opinion, mec.

Jeff Lebowski

Pourquoi j’utilise vim

Désolé d’avance, ça va être plus technique que le billet précédent : arrêtez vous là si vous n’êtes pas friands de détails de geek.

Qu’est-ce que vim ?

Pour se mettre dans le contexte : un éditeur de fichiers. Plus exactement un programme qui remonte à loin et marche vraiment bien si vous ne voulez pas toucher votre souris. Ça fonctionne même dans une console comme l’interface n’est pratiquement que du texte.

La page d’accueil du projet est ici : https://www.vim.org/

Il y a beaucoup d’éditeurs de texte, j’en ai utilisé quelques uns : Emacs, VSCode, neovim, IntelliJ, Eclipse, nano et même Notepad++. Mais vim est celui que fonctionne vraiment bien pour moi.

Pourquoi je l’utilise et l’adore

Quand j’ai découvert Linux, vers 1997, je n’ai pas réussi à avoir un environnement graphique opérationnel, X11 était difficile à configurer. Le seul éditeur de texte que ma mère a trouvé par défaut était vi. J’ai été plutôt déçu quand elle m’a expliqué ce que je devais taper pour éditer mon fichier XF86Config. Et en plus je ne pouvais pas utiliser la souris. Ne parlons pas non plus de quitter vi !

Faisons un bon en avant de quelques années et là j’ai pris plaisir à utiliser d’autres distributions GNU/Linux. Cette fois j’ai tenté d’apprendre quelques commandes et ça a pu me faire gagner du temps pour corriger des petits problèmes. Quand j’ai commencé à bosser, tous les UNIX sur lesquels je suis intervenu étaient équipés de cet éditeur. Je devais apprendre à l’utiliser mieux. La documentation est bonne, on peut commencer par vimtutor et il y a aussi la commande intégrée :help.

En 2015, j’ai tenté d’améliorer ma frappe au clavier et j’ai changé de disposition (bépo). Ça a été un bon moment pour revoir mon utilisation de vim. J’ai lu un paquet d’articles et de documentation pour m’améliorer. J’ai découvert le mode visuel bloc et l’auto complétion en mode insertion. Je n’avais même pas imaginé ce genre de fonctionnalités dans cet éditeur.

Configuration

Les paramètres par défaut peuvent varier, ça fluctue en fonction de la distribution Linux. Dans mon cas, pour les contextes d’utilisation de l’éditeur, c’est du Debian GNU/Linux. Même entre les versions on peut avoir des surprises comme le réglage de la souris ('mouse').

Voici quelques paramètres que j’apprécie sur mon poste de travail, dans le fichier ~/.vim/vimrc :

set list listchars=nbsp:⎵,eol:↲
set number
set smartindent
set textwidth=80

:filetype plugin indent on

Comme je me suis mis à utiliser l’espace insécable, je voulais les voir. Et autrement rien de très spécial, c’est presque tout.

Pour ce qui concerne les choses spécifiques à des formats, j’utilise les capacités de surcharge de plug-in de type (ftplugin-overrule). Étant utilisateur de mutt, j’aime bien avoir quelques options, mais juste pou cet usage. Ça me donne un fichier ~/.vim/after/ftplugin/mail.vim avec ce contenu :

set linebreak
set formatoptions+=w
set number
set spell
set spelllang=fr,en

Je n’ai pas envie de rentrer dans les détails de tous ces paramètres, si vous voulez plus d’infos, lisez le manuel : :help dans vim.

Je n’utilise pas de plug-ins additionnels et j’essaie de connaître, ou au moins de savoir, les fonctionnalités qui existent. En tant qu’ingénieur de production/DevOps, dans toutes les circonstances, dans le milieu de la nuit sur une intervention par exemple, je sais que je vais devoir l’utiliser. Je n’ai pas envie de dépendre d’une macro personnelle ou d’un réglage que je ne pourrais pas retrouver sur un des nombreux environnements (que je partage avec des collègues) puisque je n’ai pas pu le personnaliser ou préparer.

Au delà de l’éditeur

En tant qu’utilisateur de vim de longue date (près de 20 ans), de nombreuses combinaisons de touches me semblent logiques et naturelles. De temps en temps je recherche des applications cousines dans le milieu de l’open-source. Pour en lister quelques unes :

Pour terminer ce billet, j’ai envie de remercier platement Bram et tous les contributeurs du projet. Également, grand merci à vous tous qui partagez vos trucs et astuces où que ce soit. Parfois je vais trainer sur la communauté vim de Reddit et découvre des approches et commandes très intéressantes.