根本原因是word_separators配置项默认包含-、.、_、$等分隔符,导致user-name、obj.method被截断;需在Preferences→Settings–User中删去对应符号,保存后生效,但语法专属设置优先级更高。

双击选中不完整?查 word_separators 配置项
Sublime Text 双击只选中 user 而不是 user-name,或只选中 obj 而非 obj.method,根本原因不是鼠标或系统问题,而是编辑器用 word_separators 字符串硬性定义了“哪里算断词”。默认值里包含 -、.、_、$ 等,它们都会把一个逻辑标识符切成多段。
这个配置影响所有基于“单词”的操作:不只是双击,还包括 Ctrl+←/→ 光标跳转、Ctrl+Shift+←/→ 选择、Ctrl+D 逐个匹配、甚至“当前单词高亮”(比如双击后按 Ctrl+F)。
- 修改位置必须是
Preferences → Settings – User(右侧面板),不能改Settings – Default - 值必须是合法 JSON 字符串,引号、逗号缺一不可;格式错误时底部状态栏会报错
- 改完保存即生效,但已打开的文件需手动点击一次光标位置才能刷新选中逻辑
删哪些符号?按语言场景取舍
别一股脑全删——删得越宽,选中范围越大,但语义干扰也越强。比如删掉 / 后,https://example.com/api/v1 会被当一个“词”,写 URL 或路径时反而卡手。
常见需求与对应删减建议:
- 想支持
user-name、bg-red-500:删掉- - 想支持
obj.prop、console.log:删掉. - 想支持
user_name、MAX_SIZE:删掉_ - 想支持
$data、$user_id(PHP/JS):删掉$ - 保留
/、?、=、&,避免 URL 和查询参数被误吞
推荐最小改动起手值:"word_separators": "./\()\"',;:~!@#%^&*|+=[]{}`~?"(已去 -、_、.、$)
为什么改了还是不生效?优先级和语法覆盖
改完 Settings – User 却在 .php 或 .css 文件里没效果,大概率是语法专属设置(Syntax Specific)在起作用——它的优先级高于用户全局设置。
验证方法:右下角查看当前语法类型(如 “CSS”、“PHP”),然后打开 Preferences → Settings – Syntax Specific,检查里面是否也有 word_separators。如果有,它会完全覆盖用户设置。
- 若只想局部生效(比如只在 CSS 中支持
user-name),就在对应语法设置里删- - 若要全局一致,确保语法专属设置里没重复定义
word_separators - 临时验证可切到
Plain Text语法,看是否立刻符合预期
Ctrl+D 和高亮也变“聪明”了,但正则不受影响
改 word_separators 后,Ctrl+D 不再只匹配 user,而是能连续选中 $user_name、user-name、user.name 这类变体——前提是它们共享相同的字符组合(不含分隔符)。双击选中后按 Ctrl+F,高亮区域也会扩展为整个带符号标识符。
但要注意:这个改动只影响编辑器内置的“单词”语义,不影响正则查找。比如用正则 \buser\b 匹配,依然按 Unicode 单词边界走,和 word_separators 无关。
真正容易被忽略的是光标跳转行为:Ctrl+← 是否跨 - 或 . 停顿,才是判断 word_separators 是否生效最直接的方式——比双击还灵敏。


















