应通过 workbench.colorCustomizations 修改 diffEditor.insertedTextBackground 和 diffEditor.deletedTextBackground,使用带 alpha 的十六进制色值(如 #4caf5022),不可用 editor.tokenColorCustomizations 或 RGB/named 颜色。

Diff 面板里新增/删除行颜色不明显?改 workbench.colorCustomizations
VSCode 默认的 Diff 背景色(#e6fff6 新增 / #ffebee 删除)在某些显示器或主题下确实容易看不清,尤其浅色主题配低对比度屏幕时。直接改颜色是最有效的方式,但必须通过 workbench.colorCustomizations,不是编辑器主题文件。
实操建议:
- 打开设置(
Ctrl+,或Cmd+,),搜color customization,点「在 settings.json 中编辑」 - 添加或修改
workbench.colorCustomizations对象,重点覆盖这两个 key:diffEditor.insertedTextBackground和diffEditor.deletedTextBackground - 颜色值必须是十六进制(如
#4caf5033),带 alpha 通道更稳妥(避免盖住语法高亮) - 改完保存,无需重启,Diff 面板会立即响应
为什么不能用 editor.tokenColorCustomizations?
editor.tokenColorCustomizations 只管代码内容的语法着色(比如关键字、字符串),而 Diff 面板里的新增/删除背景属于 UI 层的区域染色,归 diffEditor.* 系列 color ID 管。用错地方根本不会生效。
常见错误现象:
- 写了
"editor.tokenColorCustomizations": { "diffEditor.insertedTextBackground": "#..." }→ 完全没反应 - 漏掉
workbench.colorCustomizations外层对象 → JSON 解析失败,设置不加载 - 用了 RGB 或 named color(如
red)→ VSCode 忽略该条配置
推荐配色和透明度怎么选?
纯色太刺眼,全透明又看不出,折中方案是带 10%–20% 透明度的实色。兼顾可识别性与不干扰阅读:
- 新增行:
"diffEditor.insertedTextBackground": "#4caf5022"(青绿,柔和) - 删除行:
"diffEditor.deletedTextBackground": "#f4433622"(酒红,比默认粉红更稳) - 如果用深色主题,可稍提亮度,比如
#81c78422/#e5737322 - 别用
!important或 CSS 注入 —— VSCode 不支持运行时样式覆盖
改了没生效?先检查这三处
Diff 颜色失效通常不是配置写错,而是被更高优先级规则覆盖或路径不对:
- 确认 JSON 格式正确:外层是
"workbench.colorCustomizations": { ... },不是嵌套在"editor": { ... }里 - 检查当前是否启用了扩展主题(如 One Dark Pro):有些主题会重置
diffEditor.*,可在主题设置里关掉「Override diff colors」类选项 - 确保你在看真正的 Diff 视图(比如
git diff面板、比较两个文件时的Compare Active File With...),而不是内联装饰(inline decorations)——后者由editorGutter.addedBackground等控制,是另一套逻辑
真正麻烦的是同时要调 gutter 图标色、文本内联提示色、以及 staged/unstaged 区分色 —— 那就得查全 diffEditor.* 下二十多个 color ID,一个一个试。


















