VSCode 选中单词高亮失效的主因是 editor.selectionHighlight 未启用或 editor.wordHighlightStrongBackground 被主题设为 transparent;需开启该开关、手动配置半透明背景色,并确保语言模式正确。

VSCode 默认就能高亮选中的相同单词,但多数人看不到效果,是因为 editor.wordHighlightStrongBackground 被主题设成了 transparent,或者 editor.selectionHighlight 被关掉了——不是功能坏了,是开关没开、颜色没显式配。
确认 editor.selectionHighlight 是否启用
这是整个功能的总开关。它一关,选中后其他位置根本不会响应。
- 打开设置(
Ctrl+,或Cmd+,),搜selection highlight - 确保
Editor > Selection Highlight已勾选,对应配置项是"editor.selectionHighlight": true - 别和
editor.occurrencesHighlight搞混:后者是光标悬停时自动高亮引用,依赖语言服务,关掉反而更干净
手动设置 wordHighlightStrongBackground 颜色
editor.wordHighlightStrongBackground 控制“你当前选中的那个词”在其他位置的高亮背景色。很多主题(如 One Dark Pro、Nord)把它设成 transparent,导致你双击 userName 后页面毫无反应。
- 必须在
settings.json中显式写入,不能只靠主题继承 - 推荐值:
"editor.wordHighlightStrongBackground": "#5a5a5a55"(带 alpha 的半透色,太实会盖住括号,太虚看不见) - 顺手补上
"editor.wordHighlightBackground": "#5a5a5a33",控制非焦点匹配项的淡色背景 - 切记:别改
editor.selectionHighlightBackground——它只管你“选中词本身”的背景色,不影响其他匹配项
检查语言模式和单词边界
高亮失效常不是配置问题,而是 VSCode 根本没把文本当“代码”处理。
- 看右下角语言标识:如果是
Plain Text,editor.selectionHighlight几乎不工作;点它,选JavaScript、TypeScript或对应语言 - 如果选中
map却把mapStateToProps也高亮了,说明单词边界识别不准;可试正则\bmap\b在查找框里是否只命中独立单词 -
editor.wordSeparators决定哪些字符算分隔符,默认含-,所以user-name不会被当整体;想改,得手动删掉-
Ctrl+Shift+L 全选失败?先看光标落点
这个快捷键不读你心里想的词,只认光标是否精准落在目标词的任意字符上。
- 光标卡在空格、引号、点号或注释里,
Ctrl+Shift+L就静音 - 提前双击选中了整个词再按快捷键?VSCode 可能尝试匹配带前后符号的“整段”,极易失败
- 大小写敏感、字符串字面量(
"user")、关键字(const)默认不参与匹配——这是设计,不是 bug - 真要高亮任意文本(包括关键字或跨类型),用
Ctrl+F输入后按Alt+Enter,那是查找引擎驱动,不受语言服务限制
最常被忽略的其实是语言模式和主题覆盖——哪怕所有配置都对,右下角显示 Plain Text 或主题把 wordHighlightStrongBackground 设为透明,高亮就等于没开。


















