Sublime Text双击选词失效主因是插件劫持on_selection_modified事件或键绑定被覆盖;Ctrl+D失效常因word_separators设置或光标位置不当;三击选行失败多因系统手势冲突或drag_text启用;批量替换需用正则配合u/l等大小写指令。

Sublime Text 里双击选词不生效?检查是否被插件劫持了 on_selection_modified
Sublime Text 默认双击就选中当前单词,但很多人发现点了没反应——大概率是某个插件(比如 SideBarEnhancements 或自定义的 snippet 插件)监听了 on_selection_modified 事件,又没正确处理空选择或光标移动,导致原生行为被意外拦截。
实操建议:
- 临时禁用所有插件:菜单
Preferences → Package Control → Disable Package,逐个关掉可疑插件,再试双击 - 确认默认键绑定没被覆盖:打开
Preferences → Key Bindings,搜索"command": "select_word",确保它仍绑定在button1双击事件上(不是被删了或注释掉了) - 别手动改
Default (Windows).sublime-mousemap之类文件——升级后会被覆盖,优先用用户级配置
想按 Ctrl+D 多次选中相同单词?先确认光标在词内,且没开启 word_separators 干扰
Ctrl+D(Windows/Linux)或 Cmd+D(macOS)是 Sublime 的“增量选择”核心操作,但它对“什么是单词”的判断,严格依赖当前视图的 word_separators 设置。比如你写 user_name,默认下划线是分隔符,Ctrl+D 会分别选中 user 和 name,而不是整个 user_name。
常见错误现象:
- 光标停在单词末尾空格处,按
Ctrl+D没反应——必须让光标落在字母/数字内部才触发 - 选中
foo-bar后按Ctrl+D,只高亮foo,因为连字符在默认word_separators里 - 想全局把下划线当单词一部分?修改
Preferences → Settings – User,加一行:"word_separators": "./\()"'-:,.;~!@#$%^&*|+=[]{}`~?"(去掉下划线)
鼠标三击选整行失效?检查是否误启用了 drag_text 或触控板手势冲突
Sublime 默认三击选中整行,但 macOS 上常因系统级触控板“三指拖移”手势抢占事件而失效;Windows 上则可能是开启了 drag_text(拖拽即编辑),让鼠标按下行为被重定向。
实操建议:
- macOS:系统设置 → 触控板 → 手势 → 关掉“三指拖移”
- Windows:查
Preferences → Settings – User是否有"drag_text": true,有就删掉或设为false - 验证是否真失效:用鼠标右键菜单里的
Select → Select Line能否正常工作——如果能,就是输入事件层的问题,不是 Sublime 本身坏了
批量替换时想保留原词大小写?别只靠 Find → Replace,用 Ctrl+H + 正则 + u 或 l
直接点替换会丢大小写,比如把 userName 替成 user_name,但你想让 UserName 变成 User_Name。这时候得开正则(.* 按钮),用捕获组配合大小写转换指令。
示例(驼峰转下划线):
Find: (w)([A-Z]) Replace: $1_$2
但这样 UserName → User_Name,首字母大写丢了。更准的做法:
- 开启正则和“匹配大小写”(Case Sensitive)
-
Find: ([a-z])([A-Z])→Replace: $1_$2(只处理小写后接大写) - 再跑一遍:
Find: ^([A-Z])([A-Z][a-z])→Replace: l$1$2(句首连续大写如XMLParser,把第一个转小写) - 注意:
u是大写下一个字符,l是小写下一个字符,U/L是大写/小写直到E—— 不是所有版本都支持,Sublime 4.4+ 稳定










