<p>双击选中 user-name 或 user_name 失效是因为 wordseparators 默认包含 - 和 ,需在用户设置中修改该字段并移除二者;语法包和插件可能覆盖设置,建议优先使用 Syntax Specific 配置。</p>

双击选中 user-name 或 user_name 失效,不是 Sublime 有 bug,而是 word_separators 里默认含 - 和 _,它把这两个字符当“断点”——删掉就对了。
怎么改 word_separators 让双击连字符/下划线单词生效
打开 Preferences → Settings – User(务必改右侧用户设置),在 JSON 中添加或覆盖 "word_separators" 字段。不要复制 Default 的整串再删,直接以当前 Settings – Default 中显示的实际值为准,只移除 - 和 _:
"word_separators": "./()"',;:~!@#$%^&*|+=[]{}`?"
保存后立即生效,但已打开的文件需点击一下光标位置刷新分词逻辑。
-
-和_必须从字符串中彻底删除,不是替换成空格或注释 - 反斜杠
在 JSON 中要转义,写成\;引号"也要转义为" - 别删
.——否则https://、foo.bar全被当一个词,写前端或调试 URL 时会反人类
为什么改了全局设置,在 .ts 或 .json 文件里还是不生效
语法包(如 TypeScript、JSON、Vue)自带的 word_separators 规则优先级高于用户设置。右下角看当前语法名称(比如显示 TypeScript),临时切到 Plain Text 测试:若双击恢复正常,就是语法包覆盖了。
- 右键文件 → Settings – Syntax Specific,单独加配置:
{"word_separators": "./()"',;:~!@#$%^&*|+=[]{}`?"} - 不推荐用 PackageResourceViewer 修改语法包源码——升级后重置,还可能破坏 token 解析
- 某些插件(如 Babel、JS Custom)也会注入自己的
word_separators,可查其文档确认是否支持覆盖
Ctrl+D 还是只选 user 不选 user-name?检查这三个点
Ctrl+D 匹配依赖 word_separators 定义的“完整单词”,如果没删 -,user-name 根本不被视为一个词,自然无法匹配。
- 光标必须落在
user-name的字母范围内(不能停在前面空格或后面标点) - 第一次
Ctrl+D会选中光标所在“词”,之后才按相同词扩展;若初始选中的是-本身,后续就永远卡住 - 右下角状态栏的 Match Whole Word(整词匹配)开关开着的话,
user-name即使改了word_separators也可能被排除——关掉它
改完发现 Ctrl+← 跳得不对、Ctrl+Shift+→ 扩选太宽?这是预期行为
word_separators 不只控制双击,它统一影响所有基于“单词”的操作:光标跳转、扩选、部分插件的语义高亮范围。删掉 - 后,Ctrl+→ 会从 user 直接跳到 name 后,而不是停在中间——这不是异常,是逻辑同步更新。
- 项目大量用 kebab-case(如 CSS class、React props)时,这个变化是利好
- 若常处理路径(
/usr/local/bin)、域名(example.com)或数字(123.456),保留.和/更安全 - 全局改风险高,建议优先用
Syntax Specific设置,只对HTML、CSS、JavaScript等明确需要的语法启用


















