sublime中双击无法全选user-name等含连字符或点号的标识符,需修改word_separators配置项,删除其中的-和.符号,以调整编辑器对“单词”的定义,从而影响双击、光标跳转及ctrl+d匹配行为。

双击选不全 user-name?改 word_separators 就行
Sublime 默认把连字符 - 当作单词边界,所以双击 user-name 只会选中 user 或 name,不是 bug,是设计如此——但你完全可以关掉它。
- 打开 Preferences → Settings – User,在右侧 jsON 里添加或修改
"word_separators"字段 - 复制默认值(可在 Settings – default 里查到),删掉其中的
-,例如:"./()"'-:,.;~!@#$%^&*|+=[]{}`~?" - 保存后立即生效,不用重启;双击、
Ctrl+←/→跳转、Ctrl+D匹配都会同步响应 - 别直接删光所有分隔符——比如误删
.会导致双击obj.prop选中整串路径,删/可能让 URL 变成一个“单词”
想选 obj.prop 却被点号打断?重点删 .
点号在 JS、TS、Python 属性访问和模块导入中很关键,但默认也被当成分隔符,导致双击只选中 prop 而非整个 obj.prop。
- 同样改
word_separators,这次确保.不在字符串里,比如:"/()"'-:,.;~!@#$%^&*|+=[]{}`~?" - 保留
/、;、(等符号,否则console.log("x")可能被当成一个词选中 - 改完立刻试
Ctrl+←:光标应能从log跳到console,再跳到obj,而不是卡在点号前后
Ctrl+D 乱选大小写或带前缀的词?这不是 word_separators 的问题
word_separators 控制的是“什么是单词”,而 Ctrl+D 默认按单词边界 + 忽略大小写匹配,所以光标在 data 上按两次可能选中 Data 或 database。
- 要严格匹配大小写:先按
Ctrl+H打开替换面板,点击右下角Aa图标关闭 Match Case,再用Ctrl+D - 要只匹配完整单词(避免
users被user带中):先选中目标词,按Ctrl+Shift+P输入Find: select All,等效于正则user - 想跳过某处干扰项(比如字符串里的
"user"):按Ctrl+K Ctrl+D,它跳过当前匹配,不撤销已选中的
改了设置,结果光标跳得不对?检查影响范围
word_separators 是编辑器级配置,改它不只是让双击好用,还会改变所有基于“单词”的行为,这点容易被忽略。
-
Ctrl+←/→和Ctrl+Shift+←/→的跳转/选择单位会变,比如原来跳过user-name两下,现在一下就跨过去 - 某些语言里连字符本就不该是单词一部分:Python 中
user-name是非法变量名,强行让它可双击可能掩盖SyntaxError - 如果项目混合 JS(常用
user-name类 class 名)和 Python(不用连字符),建议只在前端项目里启用,或用WordHighlight插件做局部高亮替代
真正要注意的是:你调的不是一个“双击开关”,而是一整套单词语义定义。改之前,先试一遍 Ctrl+← 和 Ctrl+D 在真实代码里的表现。