Sublime Text快捷键失灵90%是系统/输入法拦截而非配置错误,需先用sublime.log_input(True)确认按键是否进入编辑器,无输出即被macOS、输入法或第三方工具截获,有输出才排查内部绑定、插件或context问题。

Sublime Text在Mac上快捷键“失灵”,90%不是配置错了,而是按键压根没进编辑器——系统、输入法或键盘固件在半路截胡了。
怎么确认按键根本没进Sublime?
这是所有排查的第一步,跳过它改配置全是白忙活。
- 按
Ctrl+`打开控制台,输入sublime.log_input(True)回车 - 再按你怀疑失效的组合(比如
Cmd+Shift+P、Esc、Cmd+D) - 如果控制台完全没输出,说明 macOS 系统、输入法、键盘固件或第三方工具(如 Karabiner)已拦截,Sublime 什么都没收到
- 有输出(如
key evt: cmd+shift+p),才说明问题出在 Sublime 内部:绑定被覆盖、插件劫持或 context 不匹配
Cmd+Space、Cmd+Shift+P、Esc 失效?先查系统设置
这些组合常被 macOS 系统级功能抢占,Sublime 根本无从响应。
-
Cmd+Space默认被 Spotlight 占用 → 进「系统设置 → 键盘 → 快捷键 → 聚焦」,改为Cmd+Alt+Space或禁用 -
Cmd+Shift+P常被输入法劫持(尤其搜狗、百度默认用它切中英文)→ 同页面下拉到「输入源」,禁用或重设「选择上一个输入法」快捷键 -
Esc关不了搜索框?它不走Key Bindings流程,是内核硬编码行为;若sublime.log_input(True)按Esc无输出,大概率是外接键盘没勾选「使用 F1、F2 等键作为标准功能键」
Cmd+D、Cmd+Shift+L 多行编辑没反应?重点盯输入法和插件
这些组合极易和中文输入法冲突,也常被 Vintage 等插件覆盖。
-
Cmd+Shift+L(split_selection_into_lines)被搜狗/百度输入法默认绑定 → 切到系统自带「简体中文-拼音」测试,若恢复即为输入法问题 -
Cmd+D(find_under_expand)在启用 Vintage 插件后可能被重映射 → 运行subl --safe-mode测试;若恢复,进Preferences → Package Settings → Vintage → Settings,设"exit_insert_mode_on_escape": false - 别在
Key Bindings – User里硬写{"keys": ["cmd+d"], "command": "find_under_expand"}—— Vintage 的 Default 绑定加载顺序靠后,会直接盖掉你的配置
User.sublime-keymap 写错 JSON 就静默失效
Sublime 不报错,但整段配置会被忽略,你改了等于没改。
- 必须用英文双引号:
{"keys": ["ctrl+alt+f"], "command": "format_code"},不能用中文引号或单引号 - 数组末尾不能多逗号:
[{"keys": ["a"]},]是非法的 - JSON 不支持
//注释,想禁用某条绑定,要么删整行,要么指向无效命令:{"keys": ["cmd+k", "cmd+u"], "command": "not_a_real_command"} - 改完务必按
Cmd+S保存,Sublime 会立即重载,但若插件的Default.sublime-keymap里也有同keys定义且加载更晚,你的自定义仍会被覆盖
真正容易被忽略的是:Esc、Tab 这类键根本不能靠 Key Bindings 改;它们的行为由内核硬编码决定,强行加绑定不仅无效,还可能破坏原生逻辑。


















