Sublime怎么设置双击选中连字符变量 Sublime修改单词分隔符【设置】

10次阅读

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

Sublime怎么设置双击选中连字符变量 Sublime修改单词分隔符【设置】

Sublime 双击选中连字符变量(如 user-name)不生效?关键是改 word_separators

默认情况下,sublime text 把连字符 - 当作单词分隔符,所以双击 user-name 只会选中 username,而不是整个标识符。这不是 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,双击依然断开。大概率是被以下机制覆盖:

  • 某个插件(比如 SideBarEnhancementsBracketHighlighter)偷偷重写了选择逻辑,禁用插件逐一排查
  • 当前文件绑定了错误的语法类型(右下角显示 Plain Text 而非 javascript),导致语法专属设置没加载
  • 项目级设置(Project → Edit Project)里有更高优先级的 settings 块,覆盖了用户或语法设置

最简单的验证方式:新建无插件、无项目、纯 JS 文件,设置语法为 JavaScript,再试双击。如果这时正常,问题就出在环境干扰上。

连字符变量选中这事看着小,但真写 react/vue 组件时,data-test-idv-bind:class 这类东西天天要选,少一次鼠标拖拽,一天下来省下的操作次数超乎想象。不过也别一股脑删光分隔符——留着 ./ 对路径和链式调用还是必要的。

text=ZqhQzanResources