双击选中范围由 word_separators 控制,非 bug 而是设计;修改用户或语法专属设置中的 word_separators 即可生效,但需注意优先级覆盖、平台差异及侧边栏不可配置。

双击选中范围由 word_separators 控制,不是“没选全”,而是被切开了
Sublime 默认把 _、-、. 都当成单词边界,所以双击 user_name 只会选 user 或 name,obj.prop 也被劈成两段。这不是 bug,是设计——改 word_separators 就行,不用装插件、不重启,改完立刻响应。
打开 Preferences → Settings – User(务必改右侧用户设置),添加或修改这一行:
"word_separators": "./\()\"',;:~!@#$%^&*|+=[]{}`?"
注意:这里已去掉 _ 和 -,但保留了 .;如果你也想让 console.log() 整体被选中,再删掉 . ——但小心 URL 场景下 https://example.com 会被连成一整块。
- 已打开的文件需重新点一下光标位置,才能刷新双击逻辑
- 别直接复制网上“全删版”,删太多反而影响日常操作
- 改完后
Ctrl+←/→(跳词)、Ctrl+D(逐个选相同词)也会按新规则走
为什么在 .ts 或 .json 文件里改了也不生效?语法包优先级更高
TypeScript、JSON 等语法包自带的 .sublime-syntax 文件可能重写了 word_separators,直接覆盖你的用户设置。这不是你配错了,是规则被压住了。
验证方法很简单:临时切换到 Plain Text(View → Syntax → Plain Text),双击看看是否恢复正常。如果正常,基本就是语法包在背后改规则。
- 解决方案是写语法专属设置:打开
Preferences → Settings – Syntax Specific,当前是.ts就填JavaScript (TSX)对应的设置项 - 语法专属设置里加同样字段:
"word_separators": "./\()\"',;:~!@#$%^&*|+=[]{}`?" - 保存后,该类型文件立即按新规则响应双击
团队协作时这个设置不会同步,Ctrl+D 行为可能不一致
word_separators 是纯本地设置,不随项目或 .sublime-project 文件传播。别人没删 _,双击 user_name 就只选一半,Ctrl+D 也不会把 user_name 和 username 当作同一词匹配。
- Code Review 时容易漏掉这类语义差异,尤其在重构变量名时
- 某些插件(如旧版 Emmet、BracketHighlighter)会劫持鼠标事件,临时禁用可验证是否冲突
- 真正难调的不是值本身,而是 macOS / Windows 默认值不同 + 语法包 + 插件层层覆盖的优先级关系
别指望靠设置控制侧边栏双击行为
侧边栏本身没有“双击打开文件”之外的可配置双击行为。所谓“自定义侧边栏双击”,实际只有两个可控点:
-
preview_on_click:设为false后,单击侧边栏文件就直接打开(不是预览),双击效果不变 -
show_open_files:设为true后,当前编辑的独立文件(非项目内)也能在侧边栏高亮显示,但双击仍只是打开
侧边栏节点不支持像编辑区那样通过 word_separators 定义选中逻辑——它压根不提供双击选中文本的功能。所有试图“让双击侧边栏文件夹展开/折叠/运行脚本”的需求,都得靠写 Python 插件监听 on_selection_modified 或拦截右键菜单实现,不是改设置能解决的。











