ObsidianとVS CodeでMarkdownリストのインデントがずれる問題がようやく解決した

Obsidian / VS Code の Markdown リストのインデントの解釈

  • Obsidian で Markdown リストのインデントをつけると、VS Code では タブ = スペース 4 として解釈される
    • にも関わらず、VS Code では タブ = スペース 2 と解釈されてしまう
      • スペース数が 2 だと、Obsidian 上ではインデントが付いているのか付いていないのか判別できないレベルで表示される
    • 「じゃあ、Obsidian 側の設定を変えて、タブ・スペース数を 2 にすればいんじゃね?」と設定を変えてみるも意図した通りに表示されない

VS Code の設定を再確認

  • VS Code 側でのインデント設定について、 settings.json には確かに以下のようにインデント設定している
    "editor.tabSize": 4,
    "editor.insertSpaces": false,
    "editor.detectIndentation": false,
  • 画面右下のタブ・スペースの設定も、タブのサイズ: 4 と表示されている
  • なのに、なのに、
    • VS Code 上で Markdown のリストにインデントをつけると、スペース数が 2 で解釈される
  • なぜ!!!?

原因は拡張機能でした

  • 「Markdown All in One」というプラグイン
    • 箇条書きリストを書いていて、Enter 押下で下の行に新規リストを追加(ハイフン付与)してくれたり、番号付きリストなら連番をふってくれるやつ
  • こやつのインデントサイズの設定に問題がありました

リスト構文のインデント形式(TOCの生成にも影響します)
リスト構文のコンテキストによって異なったインデント幅を使用するか、VS Codeにおけるタブのサイズに従うかどうか

  • これの初期値が adaptive になっていると、VS Code の設定を上書きしてしまうようです
  • なので、これを inherit に変える必要がある
    • settings.json に以下を追記する
"markdown.extension.list.indentationSize": "inherit"