VSCode で settings.json の設定が反映されない
VSCode の設定は User / Workspace / Folder / Remote の優先順位で上書きされる。
Workspace に同名キーがあれば User 側は負ける。
JSON の構文ミスや Profile 違いも頻出。
優先順位と編集対象を把握すれば大半は解消する。
要約
VSCode の設定が効かないときは、まず どの settings.json が読まれているか を疑う。
優先順位は Default < User < Remote < Workspace < Folder < Language scope で、上書きされていれば下位の値は反映されない。
Profile 切り替えや Remote セッションでは別の settings.json が使われ、JSON 構文エラーがあると設定全体が黙って失効することもある。
よくある原因
- Workspace 設定が User を上書き:
.vscode/settings.jsonに同じキーがあると、こちらが勝つ。
チームで共有する設定はここに、個人色は User 側に分けるのが原則。 - Remote と Local で別物: Remote-SSH / WSL で開いたウィンドウは別の settings.json を読む。
Local の変更が反映されないように見える典型例。 - Profile 違い: VSCode の Profile 機能で別プロファイルに切り替わっていると、別の User 設定が使われる。
- JSON 構文エラー: 末尾カンマや未閉じ括弧があると VSCode はその settings.json を丸ごと無視する(通知が出ないことも多い)。
- Language scope の上書き:
[typescript]ブロックでeditor.formatOnSaveを false にしていると、全体設定の true は当該言語では効かない。
解決策
1. 編集対象を明示して開き直す
Ctrl+Shift+P から:
Preferences: Open User Settings (JSON)
Preferences: Open Workspace Settings (JSON)
Preferences: Open Remote Settings (JSON)公式の Settings ドキュメント のとおり、これらは別ファイルで優先順位も異なる。
Workspace 側が空ファイルになっていて User 側に書いていなかった、というケースが意外と多い。
2. 構文エラーを確認する
Problems パネル(Ctrl+Shift+M)と Output パネルの Log (Window) に JSON のパースエラーが出ていれば、その settings.json は読まれていない。
末尾カンマや "key": の値欠落を直す。
3. Profile を確認する
ステータスバー右下のアイコンに表示される名前が現在の Profile。Profiles: Switch Profile で意図したものに戻す。
Profile ごとに拡張機能・User 設定・キーバインドが分かれる仕様は 公式の Profiles ドキュメント を参照。
4. Language scope を確認
{
"editor.formatOnSave": true,
"[markdown]": {
"editor.formatOnSave": false
}
}Settings UI の対象設定を選び、左下に出る Modified in: ... 表示で、どのレイヤで上書きされているかが確認できる。
Language scope が当たっていれば、その言語のみ別値が使われている。