sublime双击选中范围由word_separators控制,删去其中的_、-、.等符号即可支持user_name、obj.prop等完整标识符;需在用户设置或语法专属设置中修改,改后即时生效但已开文件需重置光标。

Sublime 的双击选中范围不是“选得不够大”,而是被 word_separators 里预设的符号硬性切开了——改它就对了,不用装插件、不重启,改完即生效。
怎么让双击选中 user_name、user-name、obj.prop 这类带符号的完整标识符
默认情况下,_、-、. 都在 word_separators 字符串里,所以双击 user_name 只能选中 user 或 name;同理 obj.prop 拆成两段,bg-red-500 被切成三块。
- 打开 Preferences → Settings – User(务必改右侧用户设置)
- 添加或修改
"word_separators"字段,把不需要的分隔符删掉,例如要支持下划线和连字符:"word_separators": "./\()\"',;:~!@#$%^&*|+=[]{}`?"(注意这里已去掉_和-) - 点保存,立刻生效;但已打开的文件可能需要重新点击光标位置才能刷新选中逻辑
- 别直接复制网上的“全删版”——比如去掉
/,会导致https://example.com被当一个词选中,写 URL 时反而卡手
为什么改了 word_separators 在 .ts 或 .json 文件里还是不生效
因为语法专属设置(Syntax Specific)优先级高于用户全局设置。TypeScript、JSON 等语法包自带的 .sublime-syntax 文件可能重写了 word_separators,覆盖了你的配置。
- 右下角看当前文件语法(比如显示
TypeScript),然后 右键文件 → Settings – Syntax Specific - 在弹出的 JSON 里加同样字段:
"word_separators": "./\()\"',;:~!@#$%^&*|+=[]{}`?" - 保存后,该类型文件立即按新规则响应双击
- 如果不确定是不是语法干扰,临时切到 Plain Text(View → Syntax → Plain Text)试试——若双击变正常,基本就是语法包在背后改规则
双击选中还影响哪些操作,容易踩什么坑
word_separators 不只管双击,还控制 Ctrl+←/→(跳词)、Ctrl+D(逐个选相同词)、Alt+F3(全文高亮匹配)等行为。改得太宽或太窄都会反向拖慢效率。
- 删掉
.后,console.log("x")双击可能选中整行——因为log("x")被连成一块,而括号和引号不在word_separators里 -
Ctrl+D会严格按新分隔规则找“单词”,比如你删了_,user_name和username就不再算相同词了 - 团队协作时,这个设置不会随项目同步——别人没改,双击行为就不一致,Code Review 时容易漏改
- 某些插件(如 BracketHighlighter、旧版 Emmet)会劫持鼠标事件,临时禁用插件可验证是否冲突
真正难调的不是值本身,而是不同语法、不同插件、不同操作系统(macOS 默认值和 Windows 有差异)之间层层覆盖的优先级关系——建议先在 Plain Text 下验证基础逻辑,再一层层加回语法和插件,否则很容易以为改错了,其实是被更高优先级的规则盖掉了。











