先确认按键是否进入sublime:执行sublime.log_input(true)无输出说明被系统/输入法/驱动截断;有输出则按加载顺序default→插件default→user排查覆盖及json语法错误,esc等键不走keymap流程。

快捷键没反应,90% 不是 Sublime 坏了,而是按键根本没进编辑器,或被后加载的插件静默覆盖。
怎么确认按键是否真的进了 Sublime
这是所有排查的第一步,跳过它直接改配置=白忙活。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你怀疑失效的组合键(比如 Ctrl+/、Esc、Cmd+Shift+P)。如果控制台完全没输出,说明信号被系统/驱动/输入法截断了:
- Windows:检查 NVIDIA 控制面板 → 「热键」、Intel Graphics Command Center → 「快捷键」是否启用了
Ctrl+Alt+方向键或Ctrl+Shift类组合 - macOS:系统设置 → 键盘 → 快捷键 → 「Spotlight」或「输入源」是否占用了
Cmd+Space;未勾选「使用 F1、F2 等键作为标准功能键」时,Esc可能被键盘固件吞掉 - 输入法:搜狗、QQ 拼音默认占用
Ctrl+Space和Ctrl+Shift,切英文输入法再试一次
为什么改了 User.sublime-keymap 还是无效
因为 Sublime 的快捷键加载顺序是:Default → 插件自带的 Default.sublime-keymap → User.sublime-keymap,后加载者静默覆盖前一个,不报错也不提示。排查建议:
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开 Default 和 User 文件 - 在左侧
Default中搜索目标组合(如"ctrl+d"),确认它原本应触发什么命令(如duplicate_line) - 在右侧
User和所有插件目录(Packages/Vintage/、Packages/Emmet/等)中全局搜索相同"keys"字段 - 高危插件优先排查:
Vintage、Emmet、Origami、GitGutter
User.sublime-keymap 写错 JSON 就等于没写
这个文件是纯 JSON 数组,语法错一点整份配置就被 Sublime 静默忽略——右下角可能只闪一下红字错误提示,稍不注意就错过:
- 所有键名和字符串值必须用英文双引号包裹,
"keys"不是keys,"toggle_comment"不是toggle_comments(多加s就失效) - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//注释;想临时禁用某条绑定,要么删整行,要么改成无效命令:"command": "not_a_real_command" - 保存(
Ctrl+S)后立即生效,不用重启,但必须确保没其他插件在更靠后的位置又绑了一次
Esc 键关不了命令面板?别碰 Key Bindings
关闭搜索框、命令面板、替换面板这些行为是 Sublime 内核硬编码的,不走任何 .sublime-keymap 流程。你在 User.sublime-keymap 里加 {"keys": ["escape"], "command": "xxx"} 不仅没用,还会破坏原生逻辑——比如按 Esc 后搜索框不关闭,面板也不隐藏,UI 就卡在那里。
若 Esc 失效,先运行 subl --safe-mode:如果此时恢复,说明是插件劫持(常见于 Vintage、Origami);Vintage 需设 "exit_insert_mode_on_escape": false,Origami 则关掉其 close_on_escape 选项。











