应修改 workbench.colorCustomizations 中的 editor.wordHighlightBackground;需用半透明色如 "#ff9e5840",避免覆盖语法着色,且须区分 wordHighlightBackground(当前词)与 wordHighlightStrongBackground(引用处)。

怎么改 VSCode 选中代码的背景色(不是高亮,是光标所在词的背景)
VSCode 默认对当前光标所在的单词会加一层浅色背景(叫 editor.wordHighlightBackground),但很多人没注意它和「多光标选中」或「Find 高亮」不是一回事。想让它更明显,不能只调主题色,得手动覆盖 token 颜色配置。
常见错误现象:editor.wordHighlightBackground 改了但没生效,是因为它被主题内置样式优先级盖过了;或者改完发现只有当前文件生效,其他语言不一致——这是因为部分语言扩展(比如 Python、TypeScript)会自己注册自己的高亮规则。
- 必须在
settings.json中用"workbench.colorCustomizations"覆盖,而不是靠主题或插件 - 推荐用半透明深色(如
"#ff9e5840"),既突出又不刺眼;纯不透明色容易遮挡语法着色 - 如果只想改「当前光标所在词」(非全文匹配),确保你设的是
editor.wordHighlightBackground,不是editor.wordHighlightStrongBackground(后者用于“被引用处”,比如函数定义位置)
为什么改了 colorCustomizations 还没反应?检查这三处
最常踩的坑是改错地方或漏掉作用域。VSCode 的颜色优先级:内建主题 workbench.colorCustomizations(全局)workbench.colorCustomizations(按语言)。
- 确认你编辑的是用户级
settings.json(不是工作区级),路径通常为~/.config/Code/User/settings.json(Linux/macOS)或%APPDATA%\Code\User\settings.json(Windows) - 检查有没有拼错 key:必须是
"editor.wordHighlightBackground",少个Background或大小写不对都不行 - 某些语言(如 Markdown、JSON)默认不触发 word highlight,需要先开启:
"editor.wordBasedSuggestions": true并确保光标停在有效标识符上(比如变量名,而不是空格或标点)
想让不同语言用不同高亮色?可以但要小心
VSCode 支持按语言覆盖颜色,但语法是嵌套在 workbench.colorCustomizations 下的 "[language-id]" 对象里,不是独立配置项。实际效果受语言服务器影响较大——比如 TypeScript 会用自己的语义高亮覆盖你的设置。
- 语言 ID 查法:打开对应文件 → 右下角看状态栏,点击语言名 → “Configure language specific settings”
- 示例:给 Python 单独设色,在
settings.json里加:"[python]": { "editor.wordHighlightBackground": "#a6e22e33" } - 别对所有语言都设,尤其
[plaintext]或[markdown],容易导致预览时满屏淡绿色,反而干扰阅读
和 editor.selectionBackground 不是一回事,别混用
editor.selectionBackground 控制的是你鼠标拖选 / Ctrl+A 那种主动选中的背景,而 editor.wordHighlightBackground 是自动的、被动的「当前词高亮」。两者颜色经常被一起改,但用途完全不同。
- 如果你发现改了
wordHighlightBackground后,按住鼠标拖选时颜色也变了,那是巧合——说明你可能误改了selectionBackground,或者用了带全局 tint 的主题 - 真正想强化「主动选择」体验,应该单独设:
"editor.selectionBackground": "#4a90e280",和 wordHighlight 分开调 - 移动端或远程开发(如 GitHub Codespaces)可能不支持部分高亮策略,这时
wordHighlightBackground会直接失效,属于已知限制
真正起效的关键就一条:在 settings.json 里用 workbench.colorCustomizations 精确覆盖,且确保语言支持 word-based highlight。别的都是干扰项。


















