用户设置存于系统配置目录,工作区设置存于项目内.vscode/settings.json;优先级为语言设置>工作区>用户>默认值,同名项后者覆盖前者。

用户设置和工作区设置分别存在哪里
用户设置是全局生效的,保存在 VSCode 安装用户的配置目录下;工作区设置只对当前打开的文件夹(或工作区)生效,保存在该文件夹下的 .vscode/settings.json 文件中。
Windows 用户设置路径:%APPDATA%\Code\User\settings.json
macOS 路径:$HOME/Library/Application Support/Code/User/settings.json
Linux 路径:$HOME/.config/Code/User/settings.json
- 工作区设置必须是文件夹级打开(File → Open Folder),单文件打开不会生成或读取
.vscode/settings.json - 如果工作区里有多个文件夹(多根工作区),每个根文件夹可有自己的
.vscode/settings.json,最外层还可配一个workspace.code-workspace文件来统一管理 - 用户设置里的内容不会自动同步到工作区设置——它们是完全独立维护的两套 JSON
配置优先级:谁会覆盖谁
VSCode 的实际生效配置 = 用户设置 + 工作区设置(后者覆盖前者同名项)+ 文件关联语言专属设置 + 扩展自定义设置。其中工作区设置优先级高于用户设置。
- 比如用户设置了
"editor.tabSize": 2,但工作区里写了"editor.tabSize": 4,那么在这个项目里所有文件都会用 4 空格缩进 - 语言特定设置(如
"[javascript]": { "editor.formatOnSave": true })优先级高于普通用户设置,但低于工作区里的同语言设置 - 命令行启动时加
--user-data-dir或--extensions-dir会临时绕过默认用户设置路径,此时用户设置不加载
{
"editor.tabSize": 4,
"[python]": {
"editor.insertSpaces": true,
"editor.tabSize": 2
}
}
哪些设置不该放工作区里
跟个人习惯、系统环境强相关的配置,放进工作区反而会干扰协作或引发冲突。
-
"terminal.integrated.defaultProfile.windows":不同人本地终端默认 shell 不同(PowerShell / Git Bash / WSL),写死在工作区会导致别人打开就报错 -
"files.associations":若只是临时想把.xyz当做 JSON 看,不要提交进.vscode/settings.json,否则所有人被迫接受 -
"workbench.colorTheme"或"editor.fontFamily":纯 UI 偏好,应留在用户设置 - 涉及绝对路径的设置(如
"python.defaultInterpreterPath"):除非团队统一用 Docker 或 devcontainer,否则极易失效
如何快速验证某条设置当前是否生效
打开命令面板(Ctrl+Shift+P / Cmd+Shift+P),输入并执行 Developer: Inspect Editor Tokens and Scopes 只能看语法高亮相关;更通用的做法是使用设置搜索 + 查看来源标识。
- 在设置界面(
Ctrl+,)搜索关键词,比如搜formatOnSave,右侧会显示当前值,并标注「Workspace」、「User」或「Language-specific」 - 点击该设置右侧的三个点 → 「Copy Setting as JSON」可快速定位它在哪个层级定义
- 终端中运行
code --list-extensions --show-versions不影响设置,但code --disable-extensions启动后,扩展带来的设置项将不参与优先级计算
工作区设置看似简单,但真正麻烦的是隐式继承链:语言设置 ← 工作区设置 ← 用户设置 ← 默认值。改一处前,最好先查清它现在从哪来。










