vscode选中单词后未高亮其他匹配项,首要检查editor.selectionhighlight是否启用;其次确认editor.wordhighlightstrongbackground颜色是否被主题设为透明;该功能仅对语言服务识别的同语义标识符生效,不匹配关键字、字符串字面量或以下划线开头的变量(除非关闭editor.semantichighlighting)。

选中单词后没高亮其他匹配项?先确认 editor.selectionHighlight 是否启用
这是最常见原因:VSCode 默认开启该功能,但用户可能手动关闭,或被插件/主题覆盖。现象是双击一个变量名(如 count),只有当前词有背景色,其余位置毫无反应。
检查方式:打开设置(Ctrl+, 或 Cmd+, ),搜索 selection highlight,确认 Editor > Selection Highlight 已勾选;或直接在 settings.json 中确保有:
"editor.selectionHighlight": true
注意:editor.selectionHighlight 对大小写敏感,Count 和 count 不会互相高亮;它也不作用于纯文本文件(如 .log)或未激活语言服务的文件(右下角语言标识显示为 Plain Text)。
editor.wordHighlightStrongBackground 被设为透明?高亮“看不见”不是没生效
很多深色主题(如 One Dark Pro、Nord)会把 editor.wordHighlightStrongBackground 设为 transparent 或极浅色值,导致你明明选中了单词,却看不到其他位置的高亮——逻辑在跑,颜色被吃掉了。
解决办法是手动覆盖该颜色,在 settings.json 中添加:
"workbench.colorCustomizations": {
"editor.wordHighlightStrongBackground": "#5a5a5a55"
}
这里用带 alpha 的十六进制(如 55 表示约 33% 不透明度)更安全,避免遮挡括号、引号等语法符号;别改 editor.selectionHighlightBackground,它只控制「选中词本身」的背景,不影响其他匹配项。
为什么 const、if、字符串里的 "user" 从不被高亮?这是设计,不是 bug
VSCode 的 editor.selectionHighlight 默认只对「被语言服务识别为同一语义单元的标识符」生效。这意味着:
-
const、return等关键字属于语法结构,不参与匹配 -
"username"字符串字面量中的文本,和变量username不被视为同一引用 - 下划线开头的变量(如
_temp)默认被过滤,除非你关掉editor.semanticHighlighting
若真要强制高亮任意文本(包括关键字或跨类型),可用 Ctrl+F 输入后按 Enter,此时所有匹配项临时带浅色背景——但这不是编辑态持续高亮,而是查找态。
插件或主题偷偷改了行为?先禁用插件验证
尤其装了以下类型插件时,高亮逻辑容易被干扰:
- Bracket Pair Colorizer
- Highlight Matching Tag
- 任何增强代码装饰(decorator)或 token 渲染的插件
排查步骤:禁用全部插件 → 重启 VSCode → 测试选中高亮是否恢复;若恢复正常,再逐个启用插件定位问题源。同时检查主题是否自定义了 editor.wordHighlightBackground 或 editor.colorDecorators,后者若设为 false,会直接压制所有装饰类高亮。
真正容易被忽略的是:高亮颜色配置和语言服务状态必须同时到位——关掉 editor.semanticHighlighting 可能让 _ 开头变量亮起来,但也可能让 TypeScript 的类型提示变弱;而换回 Default Dark+ 主题,常比调一百行 colorCustomizations 更快见效。











