直接修改 settings.json 是最可控方式,需按 vscode 四层颜色体系分层配置:workbench.colorcustomizations 控 ui 区域色,editor.tokencolorcustomizations 控代码语法色,gitdecoration.*foreground 控 git 文件状态色,语义高亮需关闭 editor.semantichighlighting.enabled 才生效。

settings.json 是最可控、最不易翻车的方式,但必须按 VSCode 的颜色体系分层操作 —— 混着改,改了也没反应。
workbench.colorCustomizations:改 UI 区域背景和文字色
这是控制侧边栏、状态栏、标题栏、活动栏等非编辑区颜色的唯一正路。键名必须是官方定义的 token,比如 sideBar.background、statusBar.foreground、tab.activeBackground。
- 值支持
"#1e1e1e"、"rgba(30,30,30,0.9)"、"transparent"等合法 CSS 颜色字符串 -
editor.background和editor.foreground在这里设有效,但部分语法高亮主题(如 One Dark Pro)会覆盖editor.foreground,实际以语言服务为准 - 别碰
vs/workbench/workbench.desktop.main.css—— 它是构建产物,升级就丢,且 Electron 不读它
editor.tokenColorCustomizations:改代码里注释/字符串/关键字的颜色
这才是真正影响你写代码时“哪段字是什么颜色”的配置项。它不走 UI 颜色 token,而是用 TextMate scope 规则匹配词法单元。
- 常用键:
"comments"、"strings"、"keywords"、"functions"、"variables" - 值只能是颜色字符串,不支持 font-style 或 font-weight;想加粗或斜体得靠语言扩展自己实现
- 如果改完没生效,大概率是当前语言服务启用了语义高亮(Semantic Highlighting),此时需关掉
"editor.semanticHighlighting.enabled": false才能强制走 token 层
gitDecoration.*Foreground:改资源管理器里文件名的颜色
左边文件树里那些绿/黄/灰/红的文件名,不是主题控制的,是 Git 装饰系统在干活。要调它们,得单独配 Git 装饰色。
- 关键 token:
gitDecoration.untrackedResourceForeground(新增未 add)、gitDecoration.modifiedResourceForeground(已修改未暂存)、gitDecoration.deletedResourceForeground(已删未暂存) - 这些配置必须放在
workbench.colorCustomizations里,不能塞进editor.tokenColorCustomizations - 如果装了 GitLens 这类增强插件,它的装饰可能优先级更高,此时要查插件文档看是否提供自己的 color token
为什么有些颜色死活改不动
不是配置写错了,而是你动错了层。VSCode 的颜色是四层叠加:Git 装饰 → 语法高亮(token)→ 语义高亮(semantic)→ UI 装饰(workbench)。每层有自己的一套 token 和开关逻辑。
-
editor.foreground被语法主题接管?试试关掉"editor.semanticHighlighting.enabled" - 改了
editor.background却发现括号匹配线还是浅色?那是editorBracketMatch.background,属于另一组 workbench token - 终端背景没变?
terminal.background是独立 token,不在 editor 或 workbench 的默认继承链里
tokenColors,结果当然没用 —— 那根本不是语法高亮干的事。











