Pythonのタブサイズがどうしても「4」にならない
はじまり


Pythonのタブサイズがどうしても「2」になる。
ずーっとウザかった。Pythonのタブサイズがどうしても「4」にならなかった。というか、インデントのサイズがどうしても「4」にならなかった。
ほら。

どうして刻むんだ。

この「タブサイズ」と「インデントサイズ」の双方の概念を把握しているかどうかが、今回の問題の肝です。 最近、この問題がやっと解決したのでこの記事にメモしておきます。
解決法その1:設定のTab Size
最も基本的な項目です。
ここの設定では、基本的なタブのサイズが設定されます。しかし、僕は基本的にタブのサイズは2が良いと思っているので、ここは2のままで、Pythonの時だけ4にして欲しい。

ちなみに、settings.jsonだと"editor.tabSize"の項目に該当します。
解決法その2:Detect Indentation の設定
Detect Indentationという設定項目も見ておきます。
この設定がオンになっていると、ファイルのインデントを見て、そのファイルにおけるインデントのサイズを設定します。オフになっていれば、エディタで設定してあるインデントのサイズしか反映されないわけです。
個人的には、settings.jsonで設定した値だけを反映してほしいので、オフにしておきます。

ちなみに、settings.jsonだと"editor.detectIndentation"の項目に該当します。Falseにすればオフになります。
解決法その3:フォーマッタの設定
Prettierなどの拡張機能に対する設定でタブサイズやインデントサイズが設定されていないかどうかをも見るべきところです。しかし、僕はフォーマッタは入れていませんし、Pylintとかも入れていません。(ESLintは入っていますが今回は関係ありません。)

ちなみに、settings.jsonだと個々のフォーマッタ用の項目に該当したり、フォーマッタ用の設定ファイルで確認できますね。
解決法その4:.editorconfigのindent_size
「Editorconfig」は、コードエディタ間でファイル(コード)のフォーマットを一貫させるための機能です。そして、.editorconfigは、その設定ファイルの形式です。JetBrainsの各IDEや、AtomとかXcodeでも使えるみたいですね。
その.editorconfigをこんな風に設定してみます。
# Editor configuration, see https://editorconfig.orgroot = true
[*.py]indent_size = 4設定してみると・・・やりました!
Pythonファイルの時にだけ、インデントのサイズが4になりました!

うーんでもなあ・・・、インデントのサイズを設定するためにわざわざ1つファイルを増やさなければならないのが気に入りません・・・。他に方法は無いのか?
解決法その5:settings.jsonでどちらか片方しか設定していない。
ここまで記事を書いてきて、何か気になります・・・。タブサイズ? インデントサイズ?
そう、もしかしたら、settings.jsonの中で、タブサイズもしくはインデントサイズの片方しか設定していないのではないでしょうか・・・。
僕のVSCodeがPythonのインデントをずっと「2」で表示し続けていた時のsettings.jsonのPythonにおける設定がこれです。
...
"[python]": { "diffEditor.ignoreTrimWhitespace": false, "editor.tabSize": 4, "editor.formatOnPaste": true, "editor.formatOnSave": true },
...そこで、このようにsettings.jsonを変更します。
...
"[python]": { "diffEditor.ignoreTrimWhitespace": false, "editor.tabSize": 4, "editor.indentSize": 4, // <- New "editor.formatOnPaste": true, "editor.formatOnSave": true },
...設定してみると・・・やりました!
Pythonファイルの時にだけ、タブおよびインデントのサイズが4になりました!

ちなみに、settings.jsonだと"editor.tabSize"もしくは"editor.indentSize"の項目に該当します。
まとめ
この記事を見ることで、古今東西の人のPython利用者のタブおよびインデントのサイズが「4」になることを願っています。
タブおよびインデントのサイズをどうにかしたいと思っている人は、他にもいらっしゃるみたいですね。(8スペースのタブを4スペースのインデントを設定する? そんなことあるの?)
Python関連の書籍
おしまい


以上になります!
記事を共有
この記事が役に立ったなら、ぜひ他の人と共有してください!