当前行高亮与代码块高亮机制独立,editor.linehighlightbackground需在workbench.colorcustomizations中配置rgba或带alpha的十六进制色值,并配合editor.renderlinehighlight设为"all"或"gutter";editor.selectionbackground直接在settings.json顶层设置即可,无需嵌套,推荐rgba(0–0.6透明度)。

当前行高亮和代码块(选中区域)高亮是两个完全独立的机制,不能混用同一配置项。改错地方、配错颜色格式、被主题或插件覆盖,是 90% 以上“改了没反应”的根本原因。
editor.lineHighlightBackground 控制当前行背景色
它只对光标所在整行生效,不依赖主题默认值,但必须配合 editor.renderLineHighlight 才能显示:
-
editor.renderLineHighlight必须设为"all"(推荐)或"gutter";"line"已在 VSCode 1.85+ 中弃用,设了也会 fallback 到"gutter" -
editor.lineHighlightBackground必须写在workbench.colorCustomizations对象里,且拼写一字不差:大小写、下划线、无空格 - 颜色值必须带 alpha:十六进制用
#rrggbbaa格式(如"#0000001a"),或rgba()字符串(如"rgba(0, 0, 0, 0.1)");纯"#000000"或"red"会被 VSCode 忽略 - 第三方主题(如 One Dark Pro、Nord)常硬编码该值,优先级高于
settings.json—— 想验证是否冲突,先切回Default Dark+主题再试
editor.selectionBackground 控制代码块(选中区域)背景色
它只影响你鼠标拖选、双击或 Shift+方向键划出的那块区域,和当前行高亮无关:
- 直接在
settings.json顶层加字段即可:"editor.selectionBackground": "rgba(38, 79, 120, 0.5)",不用套workbench.colorCustomizations - 强烈建议用
rgba()并控制 alpha 在 0.3–0.6 之间;纯色(如"#ff6b6b")容易盖住语法高亮,尤其在 JSX、模板字符串里文字发虚 - 若编辑器失焦后还想保持选中可见,需额外配
editor.inactiveSelectionBackground,它和editor.selectionBackground是两个独立通道 - 终端面板(Terminal)里的选中色由
terminal.selectionBackground单独控制,此处配置无效
为什么改了设置却没反应?重点排查这三处
不是 JSON 写错了,而是被更高优先级的东西压住了:
- 确认改的是当前窗口的设置层级:右下角显示
Remote时,必须改远程环境的settings.json,本地改无效 - 某些插件(如
Bracket Pair Colorizer、Highlight Matching Tag)会劫持 DOM 渲染,绕过 VSCode 原生颜色逻辑 —— 关掉插件再测试 - macOS 启用了「减少透明度」系统偏好设置,会导致所有半透背景变实色,看着像没生效;Windows / Linux 用户则要检查是否开了
editor.renderControlCharacters或editor.renderWhitespace,它们可能把高亮背景“画”在底层看不见
真正麻烦的不是怎么配,而是有些主题把 editor.lineHighlightBackground 或 editor.selectionBackground 写死在 package.json 的 tokenColors 里 —— 这时候改 settings.json 完全无效,得去翻主题源码,或者换一个更开放的主题。











