必须同时设置workbench.colortheme为深色主题id、window.autodetectcolorscheme为false、editor.tokencolorscheme与之匹配,并配置terminal、markdown、debug等子区域深色方案,才能真正稳住vs code深色模式。

直接改 settings.json 里的 workbench.colorTheme 和关掉 window.autoDetectColorScheme,才能稳住深色模式——光点主题面板或开系统同步,90% 的人会翻车。
怎么确认当前是不是真深色模式
别信眼睛看背景颜色。有些浅色主题也用灰底,而 Dark+ 实际是 #1E1E1E 深灰,不是纯黑。真正判断依据只有:workbench.colorTheme 的值是否为 "Dark+ (default dark)"、"GitHub Dark Default" 或其他明确带 dark 字样的已安装主题 ID。
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Preferences: Open Settings (JSON)回车 - 检查是否存在
"workbench.colorTheme": "xxx"这一行,且右边值不含light、Light+、Visual Studio Light等字样 - 若没这行,说明你还没设全局默认,只是靠快捷键临时切过
为什么设了还是变回浅色:window.autoDetectColorScheme 是最大干扰源
这个配置项一旦为 true,VS Code 就会无视你手动选的主题,强行跟着系统外观走。Windows/macOS 当前是浅色模式,它就给你切回 Light+,哪怕你 JSON 里写了 Dark+ 也没用。
- 在
settings.json中搜索window.autoDetectColorScheme - 如果存在且值为
true,必须改成false;如果不存在,加一行:"window.autoDetectColorScheme": false - 改完保存,执行
Developer: Reload Window生效(不是重启 VS Code,是重载窗口) - macOS 用户注意:即使系统设了“自动切换”,也要关掉这个开关,否则夜间模式一触发,VS Code 就白屏
只设 workbench.colorTheme 还不够,editor.tokenColorScheme 必须对齐
UI 变暗 ≠ 代码区变暗。workbench.colorTheme 控制侧边栏、标题栏;editor.tokenColorScheme 才管字符串、括号、注释这些语法高亮颜色。两者不匹配,就会出现“黑边栏 + 白代码”的割裂效果,比全亮更伤眼。
- 在
settings.json中确保同时存在这两行: "workbench.colorTheme": "Dark+ (default dark)""editor.tokenColorScheme": "Default Dark+"- 第三方主题(如 One Dark Pro)通常自动绑定 token 方案,但如果你之前手动改过
editor.tokenColorScheme,建议删掉这一行,让主题自己接管 - 验证方法:打开任意 .js 文件,看
const、"string"、// comment是否都用了深色系配色
终端、Markdown 预览、调试控制台发白?它们不继承主题
这些区域有独立配置,不写进 settings.json 就永远白底。尤其 Markdown 预览,默认走浏览器样式,哪怕你用了 GitHub Dark,预览页仍是刺眼白底。
- 终端:加
"terminal.integrated.defaultProfile": "PowerShell"(或zsh),再加"terminal.integrated.colorScheme": "Default Dark+" - Markdown 预览:加
"markdown.preview.experimental.useEditorStyle": true,它会让预览复用编辑器的语法高亮规则 - 调试控制台:部分主题(如 Material Theme)会禁用其深色渲染,最稳方案是换回
"workbench.colorTheme": "Dark+ (default dark)"并确保editor.tokenColorScheme对齐 - 注意:这些设置必须写在用户级
settings.json(不是工作区.vscode/settings.json),否则只在当前项目生效
真正稳住深色模式的关键,从来不是“选个主题”,而是堵住所有可能让它翻盘的出口:系统同步开关、语法高亮错配、子区域未覆盖。OLED 屏幕用户尤其要注意,editor.background 设成 #000000 但 sideBar.background 还是 #1E1E1E,那一道灰边就是残影来源。











