Sublime Text双击无法选中连字符变量(如user-name)是因为默认word_separators包含“-”;需在用户或语法专属设置中将其移除,并注意JSON转义规则。

Sublime 双击选中连字符变量(如 user-name)不生效?关键是改 word_separators
默认情况下,Sublime Text 把连字符 - 当作单词分隔符,所以双击 user-name 只会选中 user 或 name,而不是整个标识符。这不是 bug,是设计行为——但可以改。
真正起作用的是设置项 word_separators,它定义了哪些字符会打断“单词”选择。你需要把 - 从这个字符串里删掉。
- 打开
Preferences → Settings(左侧是默认设置,右侧是用户设置) - 在右侧用户设置中添加或修改:
"word_separators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?"(注意:这里已去掉-) - 保存后,双击
user-name就会选中整个字符串
⚠️ 注意:这个设置影响所有语言,包括 JSON 键名、CSS 类名、HTML 属性等。如果你只希望某类文件生效(比如仅 JS/TS),得用语法专属设置。
只想对 JS/TS/Python 等特定语言生效?用 Settings – Syntax Specific
全局改 word_separators 会影响 Markdown 标题(# heading-text)、路径(src/utils/helper.js)等场景,导致双击误选过长内容。更稳妥的做法是按语言定制。
- 打开一个
.js文件,菜单选Preferences → Settings – Syntax Specific - 在右侧添加:
"word_separators": "./\\()\"':,.;<>~!@#$%^&*|+=[]{}`~?"(同样去掉-) - 保存后,仅 JavaScript 文件中双击
props-user-id会全选,而 Markdown 中## quick-start仍按原逻辑分段
其他语言同理:打开对应文件 → Settings – Syntax Specific → 覆盖 word_separators。Python 的 user_name 不受影响(因为下划线 _ 默认不在 word_separators 里),但 user-name 就需要这样配。
word_separators 字符串里那些反斜杠是干啥的?别漏转义
这个字符串本质是字面量,不是正则。但其中有些字符在 JSON 里有特殊含义,必须转义,否则配置不生效甚至报错。
-
"必须写成\"(否则 JSON 解析中断) -
\必须写成\\(否则会被当转义符吃掉) -
/一般不用转义,但加\/更安全(尤其配合某些插件时) - 像
-、.、[、]这些,在 JSON 字符串里无需额外转义,直接写就行
常见错误:复制网上代码时漏了 \" 或写成 ",结果 Sublime 启动时静默忽略该设置,让你以为改了没用。
改完还是不生效?检查这三处硬编码干扰
有时候明明改了 word_separators,双击依然断开。大概率是被以下机制覆盖:
- 某个插件(比如
SideBarEnhancements或BracketHighlighter)偷偷重写了选择逻辑,禁用插件逐一排查 - 当前文件绑定了错误的语法类型(右下角显示
Plain Text而非JavaScript),导致语法专属设置没加载 - 项目级设置(
Project → Edit Project)里有更高优先级的settings块,覆盖了用户或语法设置
最简单的验证方式:新建无插件、无项目、纯 JS 文件,设置语法为 JavaScript,再试双击。如果这时正常,问题就出在环境干扰上。
连字符变量选中这事看着小,但真写 React/Vue 组件时,data-test-id、v-bind:class 这类东西天天要选,少一次鼠标拖拽,一天下来省下的操作次数超乎想象。不过也别一股脑删光分隔符——留着 . 和 / 对路径和链式调用还是必要的。










