Mac上Sublime多行编辑快捷键失效主因是系统或插件拦截:Cmd+Shift+L常被输入法劫持,Cmd+D易被Vintage插件覆盖,Ctrl+Cmd+G受context条件限制;应先用sublime.log_input(True)确认按键是否进入编辑器,再以subl --safe-mode排除插件干扰,最后检查keymap JSON格式及context配置。

Mac 上 Sublime 的多行编辑快捷键(比如 Cmd+Shift+L、Cmd+D、Ctrl+Cmd+G)失效,大概率不是你按错了,而是 macOS 或插件在中间截断或覆盖了这些组合——尤其当它们和输入法、系统服务或 Vintage/Emmet 类插件撞车时。
Cmd+Shift+L 选中多行光标没反应?先看它进没进 Sublime
这个快捷键默认触发 split_selection_into_lines,但 macOS 下常被输入法劫持(尤其是搜狗、百度输入法默认用 Cmd+Shift+L 切换中英文)。它甚至不经过 Sublime,直接被输入法吞掉。
- 打开「系统设置 → 键盘 → 快捷键 → 输入源」,检查「选择上一个输入法」或「切换输入法」是否绑了
Cmd+Shift+L或类似组合,禁用或改用Ctrl+Space - 临时切到系统自带的「简体中文-拼音」输入法,再试
Cmd+Shift+L—— 如果这时生效,就是第三方输入法的问题 - 仍无效?按
Ctrl+`打开控制台,输sublime.log_input(True),再按Cmd+Shift+L:没输出 = 系统/输入法拦截;有输出但没反应 = Sublime 内部绑定被覆盖
Cmd+D 重复选词失灵?Vintage 插件常偷偷接管
Cmd+D 在 Sublime 默认是 find_under_expand,但在启用 Vintage 插件后,它可能被重映射为 vi 模式下的动作(比如进入 visual mode),导致多选失效。
- 运行
subl --safe-mode启动无插件环境,测试Cmd+D—— 如果恢复,问题出在插件 - 重点排查
Vintage、Origami、Emmet:进Preferences → Package Settings → Vintage → Settings,确认"vi_cmd_mode_key_press_timeout": 0,并设"exit_insert_mode_on_escape": false(避免 Esc 干扰) - 不要在
User.sublime-keymap里硬写{"keys": ["cmd+d"], "command": "find_under_expand"}—— Vintage 的 Default 绑定加载顺序靠后,会直接盖掉你的配置
Ctrl+Cmd+G 全局查找选中词没响应?查 context 条件和 JSON 格式
这个组合默认触发 find_all_under,但它在某些插件(如 GitGutter、BracketHighlighter)的 keymap 文件里被复用,且加了 context 限制(比如只在 source.python 中生效),导致你在 Markdown 或纯文本里按了没反应。
- 打开
Preferences → Key Bindings,左右对比:左侧 Default 搜ctrl+cmd+g,右侧 User 和插件目录(Packages/插件名/Default.sublime-keymap)也全局搜一遍 - 找到冲突项后,别删,而是复制粘贴到 User 文件里,并删掉它的
context块(如果存在),或改成更宽松的条件,例如:"context": [{"key": "setting.is_widget", "operator": "equal", "operand": false}] - 检查
User.sublime-keymap是否合法:必须是 JSON 数组,所有字符串用英文双引号,末尾不能多逗号,不支持//注释 —— 一个标点错,整份配置静默失效
真正卡住多行操作的,往往不是快捷键本身,而是按键信号根本没传进 Sublime,或者被插件用 context 规则“精准屏蔽”。别急着重绑,先用 sublime.log_input(True) 看它有没有进门,再用 subl --safe-mode 排插件,最后才动 keymap —— 否则改半天,只是在修空气。











