vscode双击选中时排除连字符和下划线的关键配置项是"editor.wordseparators",需在用户或工作区settings.json中显式设置不含"-"和"_"的字符串,修改后必须完全重启vscode才生效。

VSCode双击选中时排除连字符和下划线的关键配置项
VSCode默认把 wordSeparators 设为一长串符号,其中就包含 - 和 _,所以双击 user-name 或 file_path 会整个选中——这不是你想要的。改法很简单:重定义这个配置,把不需要的字符删掉。
实际生效的是用户或工作区设置里的 "editor.wordSeparators" 字符串,它控制双击/按 Ctrl+Left 等操作的“单词”边界。
- 打开设置(
Ctrl+,),搜wordSeparators,点铅笔图标编辑 JSON 值 - 原值类似:
"`~!@#$%^&*()=+[{]}\|;':",./?",注意里面没有-和_——但 VSCode 内置默认值其实含这两个,JSON 里不写就继承内置值 - 显式覆盖:把
-和_从字符串里去掉(不是加进去,是确保它们不在里面) - 推荐最小改动值:
"`~!@#$%^&*()=+[{]}\|;':",./?"(确认不含-和_)
为什么改了没生效?常见错误现象
改完保存,双击还是连着选——大概率是配置没落到正确层级,或者被其他扩展/设置覆盖。
- 检查是否改在了「工作区设置」里,但你当前文件属于「用户设置」作用域;反之亦然
- 某些主题或编辑器增强扩展(如
Bracket Pair Colorizer、Auto Rename Tag)会悄悄改editor.wordSeparators,关掉它们试试 - 重启 VSCode:这个配置不是热更新的,改完必须重启才彻底生效
- 确认没在
settings.json里重复定义两次,后写的会覆盖前写的,但拼写错误(比如多空格、少引号)会导致整行失效
不同语言场景下的影响差异
这个设置全局生效,但对不同语言的影响程度不一样——不是所有地方都靠它判断“单词”。
- 普通文本、HTML、JSON:完全依赖
wordSeparators,改了立刻见效 - TypeScript/Python:语法高亮和跳转(如
F12)走的是语言服务器逻辑,不受此影响;但双击选中、Ctrl+D多光标仍受控 - Markdown 链接:
[text](url)中双击url,如果含-,现在能分段选了,但括号本身仍是分隔符(因为(和)在默认值里) - 路径补全(如
import路径):VSCode 的路径自动完成有自己的规则,不走wordSeparators,所以不影响
性能与兼容性注意事项
这个配置纯客户端行为,不涉及网络或编译,没有任何性能损耗,但要注意两个细节:
- VSCode 1.80+ 对
wordSeparators的解析更严格:如果字符串里出现未转义的"或,设置会静默失败,光标选中行为回退到默认值(含-和_) - 团队协作时,建议写进项目级
.vscode/settings.json,避免每人各自配置;但要提醒成员 VSCode 版本 ≥1.75,老版本对空格/转义处理不一致 - 别用正则或函数动态生成这个值——它只接受静态字符串,任何 JS 表达式都会被忽略
最常被忽略的一点:改完记得关掉所有 VSCode 窗口再重开,仅「重新加载窗口」不够,旧进程可能缓存旧分隔规则。











