
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.