服务端阅读 06月2日 01:14
VSCode 设置优先级怎么算?全局、工作区和文件夹级别配置覆盖规则
VSCode 的设置分三个层级:全局 > 工作区 > 文件夹。优先级从低到高,后者的设置覆盖前者。理解这个层级关系才能避免"明明改了设置为什么不生效"的困惑。三层优先级| 层级 | 存储位置 | 作用范围 | 优先级 ||------|----------|----------|--------|| 全局(User) | ~/.config/Code/User/settings.json | 所有项目 | 最低 || 工作区(Workspace) | .vscode/settings.json | 当前工作区 | 中 || 文件夹(Folder) | .vscode/settings.json(子目录) | 子目录内的文件 | 最高 |打开设置面板(Ctrl+,)时,右上角有个标签页切换:User 是全局设置,Workspace 是项目级设置。同一个设置项在两层都有值时,Workspace 的生效。什么时候用哪一层全局设置:和项目无关的个人偏好——字体大小、主题、终端 Shell、编辑器行为。这些你在任何项目里都希望保持一致。// 全局 settings.json{ "editor.fontSize": 14, "editor.tabSize": 4, "workbench.colorTheme": "One Dark Pro", "terminal.integrated.defaultProfile.osx": "zsh"}工作区设置:项目特定配置——格式化工具、lint 规则、排除了哪些目录。这些设置应该提交到 Git,让团队所有人一致。// .vscode/settings.json(项目级){ "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "files.watcherExclude": { "**/node_modules": true, "**/dist": true }, "python.defaultInterpreterPath": "./venv/bin/python"}文件夹设置:多根工作区里不同项目需要不同配置时用。比如一个 monorepo 里前端和后端用不同的格式化配置。远程设置的坑VSCode Remote(SSH/WSL/Container)的设置是独立的两套——本地和远程各自有全局设置。在远程环境打开设置面板改的是远程的全局设置,不是本地的。如果发现远程环境设置不生效,检查是不是改错了位置:Ctrl+Shift+P 输入 Preferences: Open Settings,看标签页是 [Local] 还是 [Remote]。扩展设置的优先级扩展也可以注册设置项,优先级规则相同。但扩展可以设置 scope 限制设置项在哪些层级可用:machine:只能在全局级别设置(如 Python 解释器路径)window:工作区级别resource:文件级别(可以按文件夹覆盖)如果某个设置项在工作区级别改不了,大概率是扩展把它设成了 machine scope。设置冲突排查"改了设置不生效"的排查步骤:Ctrl+Shift+P 输入 Developer: Inspect Editor Tokens and Scopes,看某个设置最终生效的值和来源在设置面板搜索该设置项,右侧会显示 "Modified in Workspace" 或 "Modified in User"如果两个地方都改了,点齿轮图标选 "Reset Setting" 清掉不需要的那层