sublime text无法真正关闭双击选中,但可通过修改word_separators设为全ascii字符使双击仅选单字符,或在packages/user/default.sublime-mousemap中映射双击为noop命令实现视觉无反应。

Sublime Text 无法真正“关闭”双击选中单词,但可以彻底禁用它的默认行为——关键不是关功能,而是让双击不触发任何选中逻辑。
双击为什么总会选中?这不是 bug,是底层设计
Sublime Text 的双击行为由 word_separators 和底层文本引擎共同决定,没有像 VS Code 那样的 “disable double click selection” 开关。所谓“关闭”,实际是让双击失去语义:要么让它选中空内容,要么让它退化为普通单击响应。
- 直接删掉
word_separators所有字符(比如设为空字符串"")会导致整行被当一个词,反而更难操作 - 把
word_separators设为包含所有 ASCII 可见字符(如" !"#$%&'()*+,-./:;?@[\]^_`{|}~"),双击任意位置都只选中单个字符——这最接近“关闭”效果 - 该设置必须放在
Preferences → Settings – User中,改Settings – Default会被升级覆盖
想让双击完全无反应?靠鼠标映射劫持
Sublime 允许用 Default.sublime-mousemap 拦截鼠标事件。只要把双击映射成一个空命令或忽略动作,就能实现视觉上的“无反应”。
- 在
Packages/User/下新建文件:Default.sublime-mousemap(注意不是Default (Windows).sublime-mousemap,后者在 ST4 中常被忽略) - 写入以下内容,覆盖双击行为:
[{ "button": "button1", "count": 2, "command": "noop" }] -
noop是 Sublime 内置的空命令,不报错、不闪屏、不干扰光标;若未生效,检查控制台是否输出command: noop(按Ctrl+`打开) - 别用
drag_select或select_all替代,它们会强制触发选中,违背“关闭”初衷
为什么改了 word_separators 还是双击选中?语法包在抢控制权
JavaScript、Python 等语言的语法包自带 word_separators 设置,优先级高于全局 Settings – User。你改了全局,但在 .js 文件里双击依然生效,就是这个原因。
- 验证方式:打开一个
.js文件,按Ctrl+Shift+P输入Set Syntax,看当前激活的是JavaScript还是Plain Text - 解决办法:在
Packages/User/下新建JavaScript.sublime-settings,写入:{ "word_separators": " !"#$%&'()*+,-./:;?@[\]^_`{|}~" } - 同理,对 Python、TypeScript 等需单独建对应文件,不能只靠全局配置
真正难处理的不是怎么关,而是关掉之后 Ctrl+Click 跳转、列选择等依赖双击上下文的功能会不会意外失效——这些行为共享同一套底层事件分发链,动鼠标映射时得同步验证其他快捷键是否照常工作。











