先确认按键是否进入sublime:执行sublime.log_input(true)后无输出说明被系统/输入法/驱动截断;有输出则检查加载顺序(default→插件default→user)、插件冲突、json语法错误或硬编码键限制。

快捷键在 Sublime Text 里没反应,大概率不是配置写错了,而是按键根本没进编辑器,或者被后加载的规则静默覆盖了。
怎么确认按键是否真的进了 Sublime
这是所有排查的第一步,跳过它等于白忙活。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你想查的组合键(比如 Ctrl+/、Esc 或 Cmd+Shift+P)。
- 控制台完全没输出 → 按键被系统/输入法/显卡驱动截断,Sublime 根本没收到
- Windows 常见拦截点:
NVIDIA 控制面板 → 热键、Intel Graphics Command Center → 快捷键、搜狗/QQ 拼音的Ctrl+Shift切换 - macOS 常见拦截点:
系统设置 → 键盘 → 快捷键 → Spotlight和输入源,尤其Cmd+Space和Cmd+Shift+P - 未勾选「使用 F1、F2 等键作为标准功能键」时,
Esc可能被键盘固件吞掉
按键进了 Sublime 但功能不对,怎么定位谁在抢
如果 sublime.log_input(True) 有输出(比如 key evt: ctrl+k),再输 sublime.log_commands(True),然后按同一组合键。控制台会显示实际执行的命令,比如 command: emmet_expand_abbreviation。
- 有输入、无命令 → 绑定被覆盖,或
command名拼错(比如toggle_comment写成toggle_comments) - 有输入、有命令但不是你想要的 → 被插件劫持,常见高危插件:
Vintage、Emmet、Origami、SideBarEnhancements - Sublime 加载顺序是:
Default→ 插件自带的Default.sublime-keymap→User.sublime-keymap,后加载者静默覆盖前一个 - 临时验证方法:命令行运行
subl --safe-mode,如果快捷键恢复,就坐实是插件冲突
User.sublime-keymap 写错 JSON 就等于没写
这个文件是纯 JSON 数组,语法错一点整份配置就被 Sublime 静默忽略——右下角红字提示一闪而过,极易错过。
- 必须用英文双引号:
"keys"不是keys,"command"不是command - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//或/* */注释;禁用某条绑定,要么删整行,要么改成"command": "not_a_real_command" - 保存后立即生效,无需重启,但得确保没其他插件在更靠后位置又绑了一次相同组合
Esc、Cmd+B 这类键根本不在 Key Bindings 管辖范围内
Esc 关闭搜索框、命令面板、替换栏,是 Sublime 内核硬编码行为,不走任何 .sublime-keymap 流程。你在 User.sublime-keymap 里加 {"keys": ["escape"], "command": "hide_panel"} 不仅无效,还会破坏原生逻辑。
-
Cmd+B在 macOS 上常被 Finder 或 Dock 的系统级快捷键占用,排查路径是:系统设置 → 键盘 → 快捷键 → 应用快捷键,搜索并删掉相关条目 -
Esc失效且--safe-mode下仍不恢复?先检查sublime.log_input(True)是否有输出;无输出则问题在键盘固件或 macOS 设置 - 某些插件(如
Vintage)会通过配置项干扰Esc行为,需进Preferences → Package Settings → Vintage → Settings改"exit_insert_mode_on_escape": false











