{"id":422,"date":"2025-09-06T01:04:50","date_gmt":"2025-09-05T23:04:50","guid":{"rendered":"https:\/\/gieorgijewski.pl\/blog\/?p=422"},"modified":"2025-09-06T01:04:50","modified_gmt":"2025-09-05T23:04:50","slug":"vim-tabulation-contre-espaces","status":"publish","type":"post","link":"https:\/\/gieorgijewski.pl\/blog\/fr\/vim-tabulation-contre-espaces\/","title":{"rendered":"Vim : tabulation contre espaces."},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"393\" src=\"https:\/\/gieorgijewski.pl\/blog\/wp-content\/uploads\/2025\/09\/574ba840dd08955c2e8b4575-1.webp\" alt=\"\" class=\"wp-image-423\" srcset=\"https:\/\/gieorgijewski.pl\/blog\/wp-content\/uploads\/2025\/09\/574ba840dd08955c2e8b4575-1.webp 700w, https:\/\/gieorgijewski.pl\/blog\/wp-content\/uploads\/2025\/09\/574ba840dd08955c2e8b4575-1-300x168.webp 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><figcaption class=\"wp-element-caption\">Sillicon Valley s\u00e9rie<\/figcaption><\/figure>\n\n\n\n<p>Ce probl\u00e8me ne me paraissait pas particuli\u00e8rement important, jusqu\u2019\u00e0 r\u00e9cemment, lorsque j\u2019analysais comment configurer mon\u00a0<strong>Vim<\/strong>\u00a0pour travailler sur un projet open source vraiment vaste.<\/p>\n\n\n\n<p>Quand je travaille sur des projets dans le cadre professionnel, j\u2019ai des environnements s\u00e9par\u00e9s, derni\u00e8rement avec une \u00ab expansion \u00bb en quatre espaces.<\/p>\n\n\n\n<p>Quand je travaille seul, j\u2019utilise des indentations de deux espaces, et j\u2019\u00e9tends automatiquement la touche de tabulation en espaces.<\/p>\n\n\n\n<p>Tout \u00e0 fait par hasard, le premier projet open source auquel j\u2019ai particip\u00e9 utilisait cette m\u00eame configuration. Il s\u2019agit de\u00a0<a href=\"https:\/\/exercism.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">exercism.org<\/a><\/p>\n\n\n\n<p>Comment puis-je configurer cela dans Vim ?<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bat\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"> set tabstop =2\n set softtabstop =2\n set shiftwidth =2\n set expandtab\n set autoindent<\/pre>\n\n\n\n<p>Ce qui pr\u00e9c\u00e8de est mon entr\u00e9e standard dans le fichier ~\/.vimrc.<br>L\u2019option\u00a0<a href=\"https:\/\/vimdoc.sourceforge.net\/htmldoc\/options.html#'tabstop'\" target=\"_blank\" rel=\"noreferrer noopener\">tabstop<\/a>\u00a0indique combien d\u2019espaces repr\u00e9sente un seul caract\u00e8re de tabulation dans le texte.<br>Cela semble simple \u00e0 interpr\u00e9ter, mais c\u2019est en fait trompeur. J\u2019ai moi aussi eu cette impression en lisant rapidement la documentation. Si vous voulez, vous pouvez cliquer d\u00e8s maintenant sur cette option et lire sa description en d\u00e9tail.<br>L\u2019option\u00a0<a href=\"https:\/\/vimdoc.sourceforge.net\/htmldoc\/options.html#'softtabstop'\" target=\"_blank\" rel=\"noreferrer noopener\">softtabstop<\/a>\u00a0est par d\u00e9faut r\u00e9gl\u00e9e \u00e0 0, ce qui signifie que seul tabstop est pris en compte. N\u00e9anmoins, ne comprenant pas parfaitement son r\u00f4le, je la r\u00e9glai \u00e0 la m\u00eame valeur que tabstop, car cela fonctionnait comme je voulais pour les indentations.<br>La troisi\u00e8me option qui agit conjointement avec les autres et qui est importante pour les indentations est\u00a0<a href=\"https:\/\/vimdoc.sourceforge.net\/htmldoc\/options.html#'expandtab'\" target=\"_blank\" rel=\"noreferrer noopener\">expandtab<\/a>.<br>C\u2019est une option de type activ\u00e9e\/d\u00e9sactiv\u00e9e, d\u00e9sactiv\u00e9e par la commande\u00a0<code>set noexpandtab<\/code>. Lorsqu\u2019elle est activ\u00e9e, appuyer sur la touche tab ins\u00e8re des espaces \u00e0 la place.<br>Combien d\u2019espaces ? Autant que la valeur de <code>tabstop<\/code>, sauf si <code>softtabstop<\/code> est diff\u00e9rent de z\u00e9ro, auquel cas c\u2019est <code>softtabstop<\/code> qui est utilis\u00e9.<\/p>\n\n\n\n<p>Voil\u00e0, ces options fonctionnent ensemble, et il ne faut pas oublier <code>shiftwidth<\/code> et les options <code>*indent<\/code>.<\/p>\n\n\n\n<p>Pour r\u00e9sumer cette partie, la configuration ci-dessus est d\u00e9fensive et r\u00e9pond uniquement \u00e0 la n\u00e9cessit\u00e9 d\u2019avoir une indentation de deux espaces par niveau. Elle complique aussi la collaboration avec d\u2019autres qui utilisent des r\u00e9glages diff\u00e9rents, en particulier pour les tabs.<\/p>\n\n\n\n<p>Dans un prochain post, j\u2019essaierai d\u2019exp\u00e9rimenter avec d\u2019autres r\u00e9glages et je lirai volontiers vos commentaires \u00e0 ce sujet, car je suis curieux de voir comment les autres configurent cela.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O\u00f9 je d\u00e9couvre ma compr\u00e9hension illusoire de la configuration de Vim et o\u00f9 j\u2019invite le lecteur \u00e0 m\u2019accompagner dans une exploration commune des subtilit\u00e9s des tabulations et des indentations.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[58],"tags":[],"class_list":["post-422","post","type-post","status-publish","format-standard","hentry","category-outils"],"_links":{"self":[{"href":"https:\/\/gieorgijewski.pl\/blog\/wp-json\/wp\/v2\/posts\/422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gieorgijewski.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gieorgijewski.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gieorgijewski.pl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gieorgijewski.pl\/blog\/wp-json\/wp\/v2\/comments?post=422"}],"version-history":[{"count":8,"href":"https:\/\/gieorgijewski.pl\/blog\/wp-json\/wp\/v2\/posts\/422\/revisions"}],"predecessor-version":[{"id":433,"href":"https:\/\/gieorgijewski.pl\/blog\/wp-json\/wp\/v2\/posts\/422\/revisions\/433"}],"wp:attachment":[{"href":"https:\/\/gieorgijewski.pl\/blog\/wp-json\/wp\/v2\/media?parent=422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gieorgijewski.pl\/blog\/wp-json\/wp\/v2\/categories?post=422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gieorgijewski.pl\/blog\/wp-json\/wp\/v2\/tags?post=422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}