VSCode双击选中含下划线单词需修改editor.wordSeparators配置,移除下划线_,注意完整覆盖默认值、正确转义反斜杠,并重启文件生效。

双击选中包含下划线的单词(如 user_name)
VSCode 默认把下划线 _ 当作单词分隔符,所以双击 user_name 只会选中 user 或 name。这不是 bug,是按 Unicode 字母+数字+下划线的「传统单词规则」做的切分,但实际开发中,我们更希望把它当一个整体。
解决方法是改 editor.wordSeparators 配置,把下划线从默认分隔符列表里删掉:
"editor.wordSeparators": "`~!@#$%^&*()=+[{]}\|;':",.<>/?"
注意:editor.wordSeparators 是完整覆盖,不是追加。必须复制默认值再删掉 _ —— VSCode 的默认值里确实包含下划线,别手写漏了其他符号,否则连 - 或 . 也会失效。
常见错误现象:
- 只写
"_"或"":无效,这不会清空分隔符,而是触发回退到内置默认值 - 漏掉反斜杠转义:比如写
没加双反斜杠\,JSON 解析失败,设置不生效 - 改完没重启编辑器或没重开文件:部分语言模式缓存了单词规则,新开一个
.js文件试试
不同语言要不要统一处理?
有些语言(比如 Python、Rust)天然大量使用 snake_case,而 JavaScript 更倾向 camelCase,但双击选中需求其实是一致的:变量名要整块选中。没必要为每种语言单独配 editor.wordSeparators。
全局设置就够用,除非你遇到极特殊场景(比如写 SQL 时想双击选中 order_by,但又不想影响 JS 里的 get_user_id() —— 这种极少,且通常靠语言专属扩展解决)。
性能影响几乎为零;兼容性也没问题,该配置自 VSCode 1.0 就存在,所有稳定版都支持。
为什么改了还是不生效?检查这三点
最常卡在这几个地方:
-
settings.json放错位置:必须在用户级或工作区级的settings.json里,不能写在launch.json或tasks.json中 - 被插件覆盖:某些主题或代码高亮插件会悄悄改编辑器行为,临时禁用插件验证一下
- 当前文件绑定了语言特定设置:打开命令面板(
Ctrl+Shift+P),输入Preferences: Configure Language Specific Settings,选当前语言,看有没有重复定义editor.wordSeparators
其他分隔符也想保留整词?比如短横线 - 或点号 .
可以,只要从 editor.wordSeparators 字符串里一并删掉对应字符就行。比如想让 my-component 或 obj.prop 也被整块选中,就去掉 - 和 .。
但要注意副作用:删掉 . 后,双击 console.log(42) 会选中整个 console.log,而不是只选 log;删掉 - 后,CSS 类名 btn-primary 能整选,但 URL https://example.com 也会变成一大坨——得看你日常编辑的内容类型权衡。
没有银弹方案,下划线几乎是唯一值得无条件移除的字符,其他得看项目习惯。
真正容易被忽略的是:这个设置只影响双击和 Ctrl+D(逐个添加匹配项),不影响正则搜索、语法高亮或 LSP 行为。别指望它让「查找所有 user_name」变得更准——那是另一回事。


















