VSCode中选中单词未高亮其他匹配项,需启用editor.selectionHighlight;它仅高亮当前选中词的全文匹配,区别于依赖语言服务的occurrencesHighlight;关键字和字符串内文本默认不被高亮。

选中单词后没高亮其他匹配项?检查 editor.selectionHighlight 是否启用
VSCode 默认开启该功能,但常被用户手动关掉或被插件覆盖。现象是:双击选中一个变量名(如 userName),只有当前词有背景色,其他同名位置完全没反应。
- 打开设置(
Ctrl+,或Cmd+,),搜索selection highlight - 确认
Editor > Selection Highlight(即editor.selectionHighlight)为 勾选状态 - 若使用了主题(如
Nord、One Dark Pro),某些主题会弱化高亮色,可临时切回默认Dark+主题验证是否主题导致 - 注意:该功能对大小写敏感,
UserName和username不会互相高亮
editor.occurrencesHighlight 和 editor.selectionHighlight 有什么区别?
这是两个独立开关,作用不同,容易混淆:
-
editor.selectionHighlight:仅高亮「当前选中区域」的全文匹配项(比如你用鼠标拖选或双击了一个词) -
editor.occurrencesHighlight:在光标停在某个符号(如函数名、变量)上时,自动高亮其所有引用(不需选中),依赖语言服务器支持 - 两者可同时开启;但若只想要“选中才高亮”,只需开前者,后者关掉能减少干扰(尤其在大型文件中)
-
occurrencesHighlight对 JS/TS 有效,但对纯文本或未启用语言服务的文件(如 .log)无效
为什么有些词(比如 const、if)从不被高亮?
VSCode 默认排除语法关键字和字符串字面量——这是有意设计,不是 bug。
- 高亮逻辑基于「语义范围」:只有被语言服务识别为同一声明/引用的标识符才会被匹配(如
const count = 1;中的count) -
const、return这类关键字属于语法结构,不会参与匹配;同理,字符串内出现的相同文本(如"count")也不会被高亮 - 想强制高亮任意文本(包括关键字或跨类型匹配)?用
Ctrl+F输入后按Enter,此时所有匹配项会带浅色背景,但这是临时查找态,非编辑态高亮
自定义高亮颜色?别动 workbench.colorCustomizations 里的 editor.selectionHighlightBackground
直接改这个配置容易翻车:它只控制「选中词本身」的背景,而非「其他匹配项」的颜色。
- 真正控制匹配项背景的是:
editor.wordHighlightBackground(普通匹配)和editor.wordHighlightStrongBackground(当前作用域内更相关的匹配,如函数内多次使用的参数) - 修改前先确认主题是否已定义这些 token:在开发者工具(
Ctrl+Shift+I)里检查元素 class 名是否含word-highlight,避免白改 - 推荐最小化修改:
"editor.wordHighlightBackground": "#ffeb3b20"
(半透明黄色,不影响可读性) - 改完重启窗口或重载窗口(
Ctrl+Shift+P→Developer: Reload Window)才生效
editor.selectionHighlight,再逐步加回。


















