双击选中变量名不完整是因为默认 word_separators 包含下划线,需在用户设置中将 "_" 从 "word_separators" 值中移除,如:"./()"'-:,.;~!@#$%^&*|+=[]{}`~?",保存后生效。

双击选中变量时只选中部分单词?改 word_separators
Sublime 默认双击选中“单词”是按 ASCII 字符边界切分的,遇到下划线 _、点号 .、美元符 $ 这类符号就自动断开——所以 user_name 双击只会选中 user 或 name,而不是整个标识符。
真正起作用的是配置项 word_separators,它定义了哪些字符算“分隔符”。想让双击选中带下划线的变量名,就得把下划线从默认列表里删掉。
- 打开
Preferences → Settings(左右两栏,改右边用户设置) - 添加或修改这一行:
"word_separators": "./\()"'-:,.;~!@#$%^&*|+=[]{}`~?"(注意:里面没有_) - 保存后立即生效,不用重启;但已打开的文件可能需要重新聚焦光标才刷新选中逻辑
别直接复制网上老教程里的值——有些版本默认含 _,有些不含;不同 Sublime 版本(如 3 vs 4)、不同操作系统(macOS 的默认值和 Windows 略有差异)也会导致行为不一致。
为什么改了 word_separators 后正则查找也变奇怪了?
这个配置不仅影响双击,还会影响 Ctrl+F 查找时的“当前单词高亮”、Ctrl+D 逐个选择相同单词、以及 Alt+F3 全文选中所有匹配项的行为。一旦删掉 _,user_name 就会被当作一个整体参与匹配,而不再是两个词。
- 如果你常用正则查找
user,它依然只匹配独立单词user,不会因为word_separators改动而失效 - 但用普通模式双击选中再按
Ctrl+D,现在会连带选中所有user_name、user_id、username—— 因为它们都以user开头且未被_截断 - 如果项目里大量使用驼峰和下划线混用(比如
userName和user_name),建议保持_在word_separators中,否则双击选中逻辑反而更混乱
想只对特定语言生效?用语法专属设置
全局改 word_separators 容易引发跨语言副作用。比如 Python 里 __init__ 希望整段选中,但 JS 里 obj.prototype.toString 又希望点号能断开——硬统一处理会两头不讨好。
- 打开任意 .py 文件 →
Preferences → Settings – Syntax Specific - 在里面加:
"word_separators": "./\()"'-:,.;~!@#$%^&*|+=[]{}`~?"(同样去掉_) - 这个设置只对 Python 语法生效,JS、JSON、Markdown 等不受影响
注意:语法专属设置优先级高于用户全局设置,且文件关联由 Sublime 自动识别(靠文件扩展名或首行 shebang),不是靠文件名关键词。
改完没效果?检查这三个地方
常见失效不是配置写错,而是被其他层覆盖或缓存干扰:
- 确认修改的是
Preferences → Settings – User(右侧),不是左侧的默认设置——左侧改了等于白改 - 检查是否装了插件如
WordHighlight或AdvancedNewFile,某些老版本会强行重置word_separators - 如果用的是 Sublime Merge,它的编辑器共享 Sublime Text 设置,但部分版本存在缓存 bug,可尝试关闭再重开当前文件
最隐蔽的坑是:某些主题或 UI 插件会悄悄注入自定义设置,尤其那些声称“优化编程体验”的打包插件——它们可能在后台覆盖了你的 word_separators,而且不提示。










