sublime如何设置双击选中连字符单词?(如user-name)

12次阅读

sublime Text 默认将连字符视为单词边界,需在 Settings – User 中修改 word_separators 删除“-”以支持双击选中 user-name 等连字符组合,同时影响光标跳转等单词操作。

sublime如何设置双击选中连字符单词?(如user-name)

sublime text 默认不把连字符当作单词边界

Sublime Text 默认的 word_separators 配置里,-(连字符)被包含在分隔符列表中,所以双击 user-name 会分别选中 username,而不是整个 user-name。这不是 bug,是设计如此——但可以改。

修改 user-settings 中的 word_separators

需要从默认设置中移除连字符 -,让 Sublime 把它视作单词内部字符。操作路径:Preferences → Settings – User,然后在右侧 jsON 中添加或修改 word_separators 字段:

{     "word_separators": "./\()"'-:,.;<>~!@#$%^&*|+=[]{}`~?" }

注意:上面字符串里已去掉 -;原始默认值(可在 Settings – default 里查到)包含 -,直接复制后删掉即可。改完保存,无需重启,立即生效。

常见疏漏点:

  • 误删了其他必要分隔符(比如 ./),导致双击选中过大范围(如整个 URL)
  • Settings – Default 里修改 —— 这个文件只读,改了也无效
  • 忘记用英文引号、逗号,导致 json 解析失败,设置不生效(Sublime 底部状态栏会提示 Error

连字符单词在不同语言语法高亮下的表现

即使改了 word_separators,双击选中行为本身是编辑器级的,和语法高亮无关;但某些语法(如 csshtml 属性名)里 user-name 本就是合法标识符,改完后选中更符合直觉。而像 pythonuser-name 本身是非法变量名(会报 SyntaxError),这时强行让它可双击选中反而可能掩盖拼写错误。

所以建议:

  • 仅在你高频处理含连字符标识符的场景下(如前端 class 名、CSS 自定义属性、JSON key)启用该配置
  • 如果同时写 Python/JS 混合项目,且对变量命名敏感,可考虑用 WordHighlight 插件做局部高亮,而非全局改 word_separators

替代方案:用正则快速选中连字符单词

不想动全局设置?可以用快捷键临时解决:

  • windows/linuxCtrl+F → 输入正则 b[w-]+b → 勾选 .*(正则模式)→ Find All,再按 Esc 退出搜索,所有匹配自动被选中
  • macOS:Cmd+F 同理
  • 想绑定为快捷键?可自定义 key bindings,触发 find_all 命令并预填正则

这个方法不影响其他编辑行为,适合偶尔需要精确选中连字符组合的场景。

真正要注意的是:改 word_separators 后,不仅影响双击,还会影响 Ctrl+←/→ 光标跳转、Ctrl+Shift+←/→ 选择单词等所有基于“单词”概念的操作。别只盯着双击,顺手试试光标移动是否符合预期。

text=ZqhQzanResources