VS Code 设置遵循明确覆盖规则:默认设置<用户设置<工作区设置<文件夹设置,语言特定设置嵌套于用户或工作区中且优先级更高;用户设置存本地、不进 Git,工作区设置应提交以保障团队一致。

VS Code 的设置不是“写哪儿就生效哪儿”,而是有一套明确的覆盖规则。搞清用户设置和工作区设置的层级关系,能避免改了配置却没反应、团队成员格式不一致、插件行为异常等问题。
用户设置:管“你”的所有项目
用户设置是全局默认配置,影响你在本机打开的每一个文件夹或工作区。它适合放你个人长期稳定的偏好,比如字体大小、主题、行号开关、自动保存时机等。
- 存储位置固定:Windows 在
%APPDATA%\Code\User\settings.json,macOS 在~/Library/Application Support/Code/User/settings.json,Linux 在~/.config/Code/User/settings.json - 修改方式:快捷键
Ctrl+,(Windows/Linux)或Cmd+,(macOS),再点左上角“用户”标签页 - 它不会随项目走,也不进 Git —— 属于你本地的“私人习惯”
工作区设置:管“当前这个项目”
工作区设置只对当前打开的文件夹(或 .code-workspace 文件定义的多根工作区)生效,优先级高于用户设置。它是项目协作的关键,确保所有人用同一套缩进、格式化、文件排除规则。
- 存储位置在项目内:
.vscode/settings.json(单文件夹项目)或my-project.code-workspace(多根工作区) - 修改方式:设置界面点“工作区”标签,或命令面板输入
Preferences: Open Workspace Configuration - 建议提交到 Git:团队成员克隆后开箱即用,但别放密码、token、绝对路径等敏感或不可移植内容
优先级顺序:越具体,越说了算
VS Code 合并配置时严格按层级叠加,高优先级设置会直接覆盖低优先级同名项。完整顺序是:
- 默认设置(内置,不可改)
- 用户设置(你设的全局习惯)
- 工作区设置(项目根目录下的 .vscode/settings.json)
- 文件夹设置(多根工作区中,某子文件夹里的 .vscode/settings.json,优先级最高)
例如,用户设置了 "editor.tabSize": 4,而项目里写了 "editor.tabSize": 2,那打开这个项目时,缩进一定是 2 —— 不用重启,改完保存就立刻生效。
语言特定设置:还能再细一层
除了上面三层,VS Code 还支持按语言 ID 单独配置,比如只对 JavaScript 或 Markdown 生效:
- 写法是
"[javascript]": { "editor.tabSize": 2 } - 它属于“嵌套在用户或工作区设置内”的一种子层,优先级高于同级普通设置
- 常用于统一团队的 JS 缩进、禁用某语言的拼写检查、指定 TypeScript 编译器路径等
基本上就这些。理解层级不是为了背规则,而是让你知道:该把什么配在哪,谁会覆盖谁,出了问题去哪查 —— 配置不再“不听话”。










