vscode选中中文后不高亮同词位置的根本原因是默认editor.wordseparators对中文无效,仅按英文空格和标点切分,无法识别连续中文为独立单词;需通过启用支持中文分词的语言模式(如markdown)或配置wordhighlightstrongbackground等颜色变量解决。

VSCode 为什么选中中文后不高亮其他同词位置
根本原因不是“没开高亮”,而是 VSCode 默认的 editor.wordSeparators 对中文无效——它只按英文空格、标点切分,对连续中文字符(如“用户管理”“登录验证”)不识别为独立“单词”。结果就是:你双击选中“用户”,光标停在那,但其他地方的“用户”不会被标记。
这不是 bug,是设计使然。VSCode 的“word”概念原生面向拉丁语系,中文需额外激活语义边界支持。
-
editor.selectionHighlight必须为true(基础开关,但开了也不够) - 语言模式必须正确:右下角状态栏显示“Chinese”或“Plain Text”时,
wordHighlightStrongBackground不生效;得是“Markdown”“JavaScript”等有语法分析能力的模式 - 纯中文文本文件(.txt)默认用 Plain Text 模式,此时即使装了中文语言包,也无分词逻辑
让 VSCode 真正识别中文“词”的两个实操路径
路径一(推荐):用支持中文分词的语言插件接管。例如打开一个 README.md 文件,右下角切到 Markdown 模式,再安装 Markdown All in One 插件——它会注入更细粒度的 token 边界规则,使“登录”“注册”这类二字词可被整词选中并高亮。
路径二:手动改 editor.wordSeparators 强行扩展分隔符(慎用):
{
"editor.wordSeparators": "`~!@#$%^&*()=+[{]}\|;':",./?·!?。;:""''()【】《》"
}
这会让 VSCode 把中文标点当分隔符,但副作用明显:
- 输入法状态下打字卡顿(每敲一个字都触发重分词)
- “用户名”会被切成“用户”和“名”,破坏语义
- JSON/YAML 等格式校验报错(把冒号、逗号加进分隔符后,语法解析器会误判)
选中中文后高亮颜色不显示?检查这两个配置项
很多人配完发现还是“看不见高亮”,90% 是主题覆盖了背景色。VSCode 有两个关键颜色变量:
-
editor.wordHighlightBackground:光标停在词上但未选中时的浅色背景(比如 hover 到console) -
editor.wordHighlightStrongBackground:**真正控制“选中后全局高亮”的颜色**,很多深色主题(如 One Dark Pro)把它设为transparent,导致你选中“请求”后,其他“请求”完全没反应
解决方法:在 settings.json 中硬编码补全(不要依赖主题):
{
"editor.wordHighlightBackground": "#5a5a5a33",
"editor.wordHighlightStrongBackground": "#5a5a5a55",
"editor.selectionHighlight": true
}
注意:值末尾的 33/55 是十六进制透明度,避免遮挡括号、引号等语法符号;别写成 #ff0000 这种不透明色。
性能卡顿或大文件里高亮延迟?关掉这个隐藏开关
如果你打开一个含 2000 行中文注释的 Vue 文件,选中“组件”后等两秒才高亮,大概率是 editor.occurrencesHighlight 在后台叠加计算。它本意是“悬停时高亮所有引用”,和“选中高亮”无关,但在中文场景下极易误触发(尤其配合 ESLint 或 Volar 插件时)。
直接关掉它:
{
"editor.occurrencesHighlight": false
}
顺带一提:editor.wordBasedSuggestions 和中文分词无关,它只影响代码补全候选词来源,不用动。
最易被忽略的一点:VSCode 不会对纯中文文本文件(.txt)启用任何分词逻辑,哪怕你装了所有插件、配了所有参数。想测试效果,务必用 .md、.js 或 .vue 文件,且右下角语言模式显示正确名称。











