双击选中 user-name 等连字符单词需修改用户设置中的 word_separators 字符串,删除其中的 -;修改后双击、Ctrl+←/→ 跳转、Ctrl+D 匹配等均生效,但仅限本地,不随项目同步。

双击选中 user-name 这类连字符单词,关键在改 word_separators
Sublime Text 默认把连字符 - 当作单词边界,所以双击 user-name 只会选中 user 或 name,而不是整个词。这不是 bug,是默认设计——但你可以改。真正起作用的是用户设置里的 word_separators 字符串,它控制所有“基于单词”的行为:双击、Ctrl+←/→ 光标跳转、Ctrl+Shift+←/→ 选择、甚至 Ctrl+D 的匹配逻辑。
- 打开 Preferences → Settings – User(右侧面板)
- 复制默认值(可先看 Settings – Default 找到原始字符串),然后删掉其中的
- - 确保最终形如:
{ "word_separators": "./\()\"'*,.;~!@#$%^&*|+=[]{}`~?" }(注意:引号、逗号、JSON 格式必须合法;漏掉引号或逗号会导致设置失效,底部状态栏会报错) - 保存后立即生效,无需重启
改了之后,不只是双击,Ctrl+← 跳转也变样了
很多人只盯着双击,却没试光标移动——这恰恰是验证改得对不对的关键。改完 word_separators 后,把光标放在 container-1 中间按 Ctrl+←,应该一次跳到开头,而不是停在 container 和 1 之间。
- 若仍分段跳转,说明
-没删干净,或 JSON 解析失败(检查状态栏错误提示) - 若光标一下跳过整行(比如从
obj.prop直接跳到文件开头),可能是误删了.或/,导致标识符范围过大 - 在 CSS/HTML/JSON 文件里效果最直观;但在 Python 中,
user-name本就是非法变量名,强行让它“可选中”反而可能掩盖拼写错误
不想全局改?用正则临时选中更安全
如果你只在少数场景(比如批量改 class 名)需要选中 user-name,又担心影响日常 Python/JS 编辑体验,就别碰 word_separators。用查找 + 正则更可控:
- 按
Ctrl+F(Win/Linux)或Cmd+F(Mac)打开查找框 - 输入正则:
[a-zA-Z0-9_-]+(匹配含字母、数字、下划线、连字符的连续标识符) - 勾选
.*(正则模式),再点 Find All,所有匹配项自动高亮并可编辑 - 想绑定快捷键?可在
Key Bindings – User里加一条:[ { "keys": ["ctrl+alt+d"], "command": "find_all", "args": { "text": "[a-zA-Z0-9_-]+", "regex": true } } ]
团队协作时,这个设置不会自动同步
word_separators 是本地用户配置,不随项目走,也不进 Git。你设好了 user-name 双击全选,同事打开同一份代码,还是只能分段选——这不是 bug,是预期行为。如果项目里大量使用连字符命名(如前端组件库),建议在 README 或 .editorconfig 里注明该配置需求,或改用 VS Code 等支持工作区级 editor.wordSeparators 设置的编辑器。
真正容易被忽略的,是“改一个字符,影响一整套单词操作”。双击只是表象,背后是 Sublime 对“什么是单词”的重新定义。动之前,先试 Ctrl+← 和 Ctrl+D,比只看双击结果靠谱得多。










