workbench.colorCustomizations 负责界面外壳(如侧边栏、状态栏),editor.tokenColorCustomizations 专管代码文本(如关键字、字符串);二者职责分明,混用无效。

直接改 workbench.colorCustomizations 就能调 UI 颜色,但必须分清它和 editor.tokenColorCustomizations 的职责——前者管按钮、侧边栏、状态栏这些“框”,后者才管 function、"string"、// comment 这些代码文本的颜色。
为什么改了 editor.background 却没变?
这不是配置写错了,而是被更高优先级的规则盖过去了:
-
workbench.colorTheme当前启用的主题可能自带强制覆盖逻辑(比如 Nord、Dracula Official 在package.json里设了"_defaults": true),换回默认的Dark+主题试试 - 工作区级配置(
.vscode/settings.json)会完全屏蔽用户级设置,先删掉它里面同名字段再验证 -
workbench.colorCustomizations必须是settings.json的顶层字段,不能嵌在editor或files下面;漏个逗号或引号,VSCode 会静默忽略整段 - 系统暗色模式没开,某些主题(如 GitHub Theme)会自动降级到亮色变体,
editor.background值再准也没用
workbench.colorCustomizations 和 editor.tokenColorCustomizations 到底怎么分工?
它们改的是完全不同的东西,混用等于白忙:
-
workbench.colorCustomizations:只动界面外壳,比如sideBar.background、statusBar.background、tab.activeBackground,甚至editorBracketMatch.background(括号高亮背景) -
editor.tokenColorCustomizations:只动代码文本,靠 TextMate scope 匹配,比如keyword、string.quoted.double.python、punctuation.bracket;想改注释颜色,得在这儿配comments,不是去workbench里找 - 查 scope 要用
Developer: Inspect Editor Tokens and Scopes(Ctrl+Shift+P 输入),点一下代码就能看到真实作用域,别靠猜
终端、Markdown、调试控制台颜色怎么同步?
它们不认 workbench.colorCustomizations,各自有独立配置项:
- 终端背景必须单独设
terminal.integrated.background,和editor.background完全无关 - Markdown 预览页用
markdown.preview.background,不设的话默认继承workbench.background - 调试控制台(Debug Console)要改
debugConsole.background,否则深色编辑器配浅色控制台,眼睛会累 - 如果用了
workbench.colorCustomizations,所有键必须放在同一个对象里,且值格式统一(推荐全用#rrggbb,避免hsl()或命名色跨平台渲染不一致)
最常被忽略的一点:改完 editor.background 后代码看不清,不是背景错了,是 editor.foreground 没同步调——深灰背景配浅灰文字,直接失效。UI 颜色和语法高亮可以分开调,但前景/背景这对必须成对出现。


















