删掉 word_separators 中的 - 即可使双击选中整个 user-name;需在用户设置或语法特定设置中修改,注意 json 转义;语法包和插件可能覆盖该设置,需针对性配置或禁用排查。

双击选中 user-name 时只删 - 就够了
Sublime 默认把 - 当作单词边界,所以双击 user-name 只会选中 user 或 name。这不是 bug,是 word_separators 的默认行为——它定义“哪些字符打断单词”,不是“哪些字符属于单词”。删掉 - 后,双击立刻能选中整个 user-name。
操作路径:Preferences → Settings – User,在右侧 JSON 中添加或修改:
"word_separators": "./\()\"',;:~!@#$%^&*|+=[]{}`?"
注意:- 必须从字符串里彻底删除,不是替换成空格或注释;反斜杠要写成 /(JSON 中 \ 是转义符);引号用 \" 转义;别手敲,复制 Settings – Default 里的原始值再删更安全。
为什么改了 word_separators 在 .ts 文件里还是断开?
语法包(比如 TypeScript、JSON、Vue)自带的 word_separators 优先级高于用户设置,你的全局改动会被覆盖。右下角看当前语法名称(如显示 TypeScript),就能确认是不是这个原因。
- 临时验证:右键文件 → Set Syntax → Plain Text,双击若恢复正常,就是语法包在起作用
- 正确解法:右键文件 → Settings – Syntax Specific,填入和用户设置一样的
word_separators值 - 文件路径对应关系:
Packages/User/TypeScript.sublime-settings、Packages/User/JSON.sublime-settings - 不推荐用 PackageResourceViewer 改语法包源码——升级后重置,还可能破坏 token 解析
Ctrl+D 还是只选 user 不选 user-name?检查这三点
Ctrl+D 匹配依赖 word_separators 定义的“完整单词”。如果没删 -,user-name 根本不被识别为一个词,自然无法匹配。
- 光标必须落在
user-name的字母范围内(不能停在前面空格或后面标点) - 第一次
Ctrl+D选中的是光标所在“词”,若初始停在-上,后续永远卡住 - 右下角状态栏的
Match Whole Word(整词匹配)开关开着的话,即使改了word_separators,user-name也可能被排除——关掉它
删 - 之后 Ctrl+← 跳得不对?这是预期行为
word_separators 不只控制双击,它统一影响所有基于“单词”的操作:光标跳转、扩选、多光标匹配、部分插件的语义高亮范围。
删掉 - 后,Ctrl+→ 会从 user 直接跳到 name 后,而不是停在中间;Ctrl+Shift+→ 扩选也会跨 -。这不是 bug,是分词逻辑同步生效的表现。
真正容易被忽略的是:不同语法包对 word_separators 的覆盖方式不一致,有的硬编码、有的可继承、有的只读;而插件(如 Babel、JS Custom)也可能注入自己的规则——遇到异常时,先禁用插件排查,比反复调配置更省时间。











