先确认 editor.selectionHighlight 是否开启,它是高亮机制总开关;再检查 editor.wordHighlightStrongBackground 是否为透明色;最后注意该功能仅对语义标识符生效,关键字、字符串、下划线变量默认不匹配。

选中单词后没高亮其他引用?先看 editor.selectionHighlight 开没开
这个开关是整套机制的总闸门,关了就彻底没反应。现象是:双击 userName,只有当前词有背景色,其他地方干干净净——不是主题问题,也不是颜色太淡,就是它被关了。
打开设置(Ctrl+, 或 Cmd+,),搜 selection highlight,确认「Editor > Selection Highlight」已勾选;或者直接检查 settings.json 里有没有这一行:
"editor.selectionHighlight": true
注意:editor.selectionHighlight 对大小写敏感,UserName 和 username 不会互相匹配;它也只在语言模式激活时生效(右下角别是 Plain Text)。
editor.wordHighlightStrongBackground 被设成 transparent?那等于没高亮
很多主题(比如 One Dark Pro、Nord)默认把 editor.wordHighlightStrongBackground 设为 transparent 或极浅色值,导致逻辑在跑,但你看不见效果。
必须手动覆盖,且要带 alpha 透明度(如 55 表示约 33% 不透明):
"workbench.colorCustomizations": {
"editor.wordHighlightStrongBackground": "#5a5a5a55"
}
- 别改
editor.selectionHighlightBackground—— 它只控制「你选中的那个词本身」的背景色,不是其他匹配项 - 别用纯黑
#000000或纯白#ffffff,会盖住括号、引号等语法符号 - 临时切回
Default Dark+主题测试,能亮就说明是主题冲突
为什么 const、"user"、_temp 不高亮?这不是 bug
VSCode 的 editor.selectionHighlight 默认只对「语言服务识别的同语义标识符」生效,这是有意设计:
-
const、if等关键字属于语法结构,不参与匹配 -
"username"字符串里的文本和变量username不被视为同一引用 - 以下划线开头的变量(如
_temp)默认被过滤,除非你关掉editor.semanticHighlighting
想强制高亮任意文本(包括关键字或跨类型)?用 Ctrl+F 输入后按 Enter,此时所有匹配项会临时带背景色——但这只是查找态,不是编辑态持续高亮。
要不要装 highlight-words 插件?看你要不要绕过语义限制
VSCode 原生高亮只认语言服务,而 highlight-words 是纯文本匹配,不依赖语言模式,JS/TS/Vue/HTML 全支持。
它适合这些场景:
- 高亮日志文件里的
ERROR或404(Plain Text模式下原生不工作) - 用正则匹配所有
console\.log(原生不支持正则) - 同时高亮多个不同词,且每词可配不同颜色
但注意:插件需显式配置 highlightwords.colors 和 highlightwords.defaultMode 才生效,光安装没用;而且它和原生高亮共存时,样式可能叠加,视觉上容易混乱。


















