先确认按键是否进入sublime:执行sublime.log_input(true)后无输出说明系统/驱动/输入法截断;有输出则检查加载顺序(default→插件default→user)和context条件。

快捷键没反应?先确认按键是否进了 Sublime
更新后快捷键失效,90% 的情况是按键根本没传进编辑器。别急着改配置,先做这一步验证:按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你怀疑失效的组合键(比如 Ctrl+/、Esc)。如果控制台完全没输出,说明信号被系统/输入法/显卡驱动截断了。
Windows 用户重点检查:NVIDIA 控制面板 → 热键、Intel Graphics Command Center → 快捷键、搜狗/QQ 拼音默认的 Ctrl+Shift 切换;macOS 用户去 系统设置 → 键盘 → 快捷键 → Spotlight 和 输入源 里查是否占用了同名组合。
Key Bindings 被插件覆盖?查加载顺序和 context 条件
Sublime 加载快捷键的顺序是:Default → 插件自带的 Default.sublime-keymap → User。后加载的会静默覆盖前一个,且不报错。
打开 Preferences > Key Bindings,左右并排看两个文件:
- 在左侧
Default中搜索你想用的组合(比如"ctrl+d"),确认它原本绑定的是哪个命令 - 在右侧
User和所有插件目录(Packages/插件名/Default.sublime-keymap)中全局搜索同一"keys"字段 - 只要某个插件(如
Vintage、Emmet)在自己的Default.sublime-keymap里写了相同组合,你的User配置就压根不会生效
User.sublime-keymap 写错 JSON 就等于没写
User.sublime-keymap 是纯 JSON 数组,不是 JS 对象,也不是配置文件。一个多余的逗号、漏掉的引号、中文标点,都会让整份配置静默失效——右下角可能只闪一下红字错误提示,稍不注意就错过。
必须遵守这些规则:
- 所有键名和字符串值必须用英文双引号包裹,例如
"keys"不是keys - 数组结尾不能多逗号:
["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"} 不仅无效,还会破坏原生逻辑。
macOS 下 Cmd+B 常被 Finder 或 Dock 的系统级快捷键占用,这不是插件问题,而是“应用无关快捷键”行为。排查路径是:系统设置 → 键盘 → 快捷键 → 应用快捷键,搜索 Cmd+B,删掉 Finder 或 Dock 的条目即可。
真正容易被忽略的是:即使 sublime.log_input(True) 有输出,也不代表命令一定执行。得再输 sublime.log_commands(True),看控制台是否输出对应命令(比如 build),否则就是 context 条件不满足,或者插件劫持了命令本身。











