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

Ctrl+` 控制台输出为空?先查系统/输入法拦截
按键根本没进 Sublime,改任何配置都白搭。按 Ctrl+` 打开控制台,输 sublime.log_input(True) 回车,再按失效组合键(如 Ctrl+/、Cmd+Shift+P)。若控制台无任何输出,说明被外部截断:
- Windows:NVIDIA 控制面板 → 「热键」、Intel Graphics Command Center → 「快捷键」里禁用
Ctrl+Alt+方向键类组合;搜狗/QQ 拼音默认占Ctrl+Shift,切英文输入法重试 - macOS:系统设置 → 键盘 → 快捷键 → 「Spotlight」和「输入源」中关闭
Cmd+Space、Cmd+Shift+P;未勾选「使用 F1、F2 等键作为标准功能键」时,Esc可能被键盘固件吞掉
Key Bindings 加载顺序决定谁生效
Sublime 按固定顺序加载快捷键:内置 Default → 插件自带的 Default.sublime-keymap → 用户 Key Bindings – User。后加载者静默覆盖前一个,不报错也不提示。
- 打开
Preferences → Key Bindings,左右并排看Default和User - 在左侧搜索目标组合(如
"ctrl+d"),确认它原本绑定的是duplicate_line - 在右侧
User和所有插件目录(Packages/Vintage/、Packages/Emmet/等)中全局搜索相同"keys"字段 - 高危插件优先排查:
Vintage、Emmet、Origami、SideBarEnhancements
User.sublime-keymap 写错 JSON 就等于没写
这个文件是纯 JSON 数组,语法错一点整份配置就被静默忽略——右下角红字提示一闪而过,极易错过。
- 所有键名和字符串值必须用英文双引号包裹:
"keys"不是keys,"toggle_comment"不是toggle_comments - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//或/* */注释;想临时禁用某条绑定,要么删整行,要么改成无效命令:"command": "not_a_real_command" - 保存(
Ctrl+S)后立即生效,无需重启
Esc、Cmd+B 这类键不走 Key Bindings 流程
Esc 关闭搜索框、命令面板、替换栏,是 Sublime 内核硬编码行为,不读取任何 .sublime-keymap 文件。你在 User 里加 {"keys": ["escape"], "command": "hide_panel"} 不仅无效,还会破坏原生逻辑。
-
Esc失效且sublime.log_input(True)无输出 → 查 macOS 系统设置或键盘固件;有输出但不响应 → 运行subl --safe-mode,若恢复则锁定是Vintage或Origami插件劫持 -
Cmd+B在 macOS 上常被 Finder 或 Dock 的「应用无关快捷键」占用,路径是:系统设置 → 键盘 → 快捷键 → 应用快捷键,搜索并删掉冲突条目 - 插件快捷键带
context条件(如只在 Markdown 中生效),光改keys不够,得看它是否匹配当前上下文











