必须在 workbench.colorCustomizations 下配置 diffEditor.insertedTextBackground 和 diffEditor.removedTextBackground 才生效,且值须为 8 位十六进制(如 #4caf5022),否则无效;配置位置错误、JSON 格式不合法或颜色格式非十六进制均导致无反应。

必须用 workbench.colorCustomizations 配置,改 diffEditor.insertedTextBackground 和 diffEditor.removedTextBackground 才生效;其他路径或颜色格式全无效。
为什么改了颜色却没反应
常见错误不是配错值,而是配置位置或格式不合法:
-
editor.tokenColorCustomizations里写diffEditor.*→ 完全忽略,这个对象只管语法高亮,不管 diff 区域背景 - 漏掉外层
"workbench.colorCustomizations": { }→ JSON 解析失败,整段设置不加载 - 用了
rgb(76, 175, 80)或green这类非十六进制值 → VSCode 直接跳过该条 - 颜色值没带 alpha(如写成
#4caf50而非#4caf5022)→ 背景完全盖住语法色,反而更难读
怎么写才真正起作用
打开 settings.json(Ctrl+, → 右上角 {} 图标),插入或修改以下结构:
{
"workbench.colorCustomizations": {
"diffEditor.insertedTextBackground": "#4caf5022",
"diffEditor.removedTextBackground": "#f4433622"
}
}
关键点:
- 必须是 8 位十六进制(#RRGGBBAA),alpha 建议 10%–20%,太透明看不出,太浓盖住变量名颜色
- 深色主题下可稍提亮度,比如用
#81c78422/#e5737322 - 改完保存即可,无需重启,Diff 视图实时响应
- 如果用了第三方主题(如 One Dark Pro),它可能覆盖你的设置——此时需确认该主题是否禁用了 colorCustomizations 继承
还能调哪些 diff 相关颜色
除了最常用的两处,这些也常被忽略但很实用:
-
diffEditor.insertedLineBackground:整行新增背景(比仅文本背景更醒目) -
diffEditor.removedLineBackground:整行删除背景,适合快速扫视删减范围 -
diffEditor.border:对比窗口边框色,调深一点能更好区分左右栏 -
diffEditor.diagonalFill:用于“移动”标记的斜线填充色,小众但冲突解决时有用
只配其中几项完全没问题,VSCode 会保留未声明项的默认值。
容易被忽略的细节
diff 颜色设置是「工作台级」而非「编辑器级」,这意味着它不会随文件类型或语言切换而变化;同时,它也不受当前启用的语法主题影响——哪怕你换成了 Monokai 或 Dracula,diffEditor.* 都走自己这套规则。真正起效的前提只有一个:确保 workbench.colorCustomizations 是顶层键,且 JSON 语法无误。多一个逗号、少一个引号,整个对象就静默失效。











