Vim : tabulation contre espaces.

Où je découvre ma compréhension illusoire de la configuration de Vim et où j’invite le lecteur à m’accompagner dans une exploration commune des subtilités des tabulations et des indentations.

Sillicon Valley série

Ce problème ne me paraissait pas particulièrement important, jusqu’à récemment, lorsque j’analysais comment configurer mon Vim pour travailler sur un projet open source vraiment vaste.

Quand je travaille sur des projets dans le cadre professionnel, j’ai des environnements séparés, dernièrement avec une « expansion » en quatre espaces.

Quand je travaille seul, j’utilise des indentations de deux espaces, et j’étends automatiquement la touche de tabulation en espaces.

Tout à fait par hasard, le premier projet open source auquel j’ai participé utilisait cette même configuration. Il s’agit de exercism.org

Comment puis-je configurer cela dans Vim ?

 set tabstop =2
 set softtabstop =2
 set shiftwidth =2
 set expandtab
 set autoindent

Ce qui précède est mon entrée standard dans le fichier ~/.vimrc.
L’option tabstop indique combien d’espaces représente un seul caractère de tabulation dans le texte.
Cela semble simple à interpréter, mais c’est en fait trompeur. J’ai moi aussi eu cette impression en lisant rapidement la documentation. Si vous voulez, vous pouvez cliquer dès maintenant sur cette option et lire sa description en détail.
L’option softtabstop est par défaut réglée à 0, ce qui signifie que seul tabstop est pris en compte. Néanmoins, ne comprenant pas parfaitement son rôle, je la réglai à la même valeur que tabstop, car cela fonctionnait comme je voulais pour les indentations.
La troisième option qui agit conjointement avec les autres et qui est importante pour les indentations est expandtab.
C’est une option de type activée/désactivée, désactivée par la commande set noexpandtab. Lorsqu’elle est activée, appuyer sur la touche tab insère des espaces à la place.
Combien d’espaces ? Autant que la valeur de tabstop, sauf si softtabstop est différent de zéro, auquel cas c’est softtabstop qui est utilisé.

Voilà, ces options fonctionnent ensemble, et il ne faut pas oublier shiftwidth et les options *indent.

Pour résumer cette partie, la configuration ci-dessus est défensive et répond uniquement à la nécessité d’avoir une indentation de deux espaces par niveau. Elle complique aussi la collaboration avec d’autres qui utilisent des réglages différents, en particulier pour les tabs.

Dans un prochain post, j’essaierai d’expérimenter avec d’autres réglages et je lirai volontiers vos commentaires à ce sujet, car je suis curieux de voir comment les autres configurent cela.

Je ne sais pas ce qu’il en est de ce blog?

Vecteezy.com

J’avais bien commencé, et voilà que huit ans ont passé –
je devais écrire sur ce que je fais, et je ne l’ai pas fait.

Depuis les dernières et uniques « Actualités et projets », huit ans se sont écoulés, pendant lesquels il s’est passé beaucoup de choses intéressantes, drôles, joyeuses, et parfois tristes.
Pendant ce temps, j’ai réalisé de nombreux projets utiles, enrichissants, amusants, parfois moins réussis… mais toujours les miens.
Et je n’en ai rien écrit.
J’avais l’impression que le fait d’écrire sur ce que je fais m’empêchait… de le faire vraiment.

Peut-être que cette fois, ce sera différent ?

Je ne vais pas, du moins pour le moment, raconter ces huit années en retard.
Je vais me concentrer sur le présent et sur l’avenir.
Allons-y !

Encore une annonce pompeuse ? Je ne crois pas. On verra bien.

P.S. J’écrirai moi-même.
Les images… ça dépendra.
Les traductions vers les langues que je ne connais pas : ce sera l’IA.