双击 user-name 只选中 user 或 name 是因 vscode 默认将 - 和 视为单词分隔符;修改 editor.wordseparators 需完整覆盖默认值并删除其中的 - 和 ,再重载窗口生效。

为什么双击 user-name 只选中 user 或 name?
VSCode 默认把 -、_、. 等符号当作单词边界,所以 user-name 被切成了两个词。这不是 bug,是编辑器对“单词”的原始定义:只认 Unicode 字母、数字和下划线组合为一个词,但一旦遇到 - 就强制断开。
真正起作用的是 editor.wordSeparators 配置项——它是一串字符串,里面每个字符都代表一个分隔符。默认值里明确包含 - 和 _,删掉它们,user-name 和 file_path 才能被当做一个整体选中。
怎么安全修改 editor.wordSeparators?
改这个配置不是加减法,而是完整覆盖。不能只写 "-" 或 ["-"],必须复制默认值再删掉不想当分隔符的字符。
- 打开设置(
Ctrl+,或Cmd+,),搜索editor.wordSeparators - 点击右侧铅笔图标 → 选择「在 settings.json 中编辑」
- 找到或新增这一行(注意反斜杠要双写):
"editor.wordSeparators": "`~!@#$%^&*()=+[{]}\|;':",./? " - 确认该字符串里没有
-和_;保留空格、(、)、.等必要分隔符,否则console.log()也会被整块选中
改完没生效?这些地方最容易出错
editor.wordSeparators 不是热更新配置,改了不重载就等于没改。
- 必须执行
Ctrl+Shift+P→ 输入Developer: Reload Window,或完全重启 VSCode - 检查作用域:你改的是「用户设置」还是「工作区设置」?如果当前文件属于某个文件夹,且该文件夹有
.vscode/settings.json,那工作区设置会覆盖全局 - 某些扩展(如 Pylance、ESLint、Auto Rename Tag)会悄悄重写这个值,可临时禁用扩展验证
- JSON 格式错误(比如漏引号、多逗号、
写成单个反斜杠)会导致整行被静默忽略
驼峰命名(userName)和连字符命名(user-name)能共存吗?
不能。二者逻辑相反,无法靠同一套 editor.wordSeparators 同时满足:
- 想让
user-name整体选中 → 删掉-和_ - 想让
userName分段选中 → 得把A-Z加进editor.wordSeparators,让大小写切换变成断点 - 加了
A-Z,user-name就又会被切成user和name;删了-,userName就永远只能整词选中
复杂点在于:拖拽选中、光标跳转(Ctrl+←/→)、查找替换里的「全字匹配」都共享同一套分隔规则。改一处,所有行为同步变化——这点常被忽略。











