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

快捷键失效或冲突,90% 不是 Sublime 配置错了,而是按键根本没进到编辑器里——先验证 sublime.log_input(True),再查绑定顺序,最后看 JSON 格式是否合法。
按键连 Sublime 都没进到,别改 Key Bindings
按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你怀疑失效的组合键(比如 Ctrl+/、Cmd+Shift+P、Backspace)。如果控制台完全没输出,说明信号被外部截断:
- Windows:NVIDIA 控制面板 → 「热键」、Intel Graphics Command Center → 「快捷键」里启用了
Ctrl+Alt+方向键或Ctrl+Shift类组合 - 输入法:搜狗、QQ 拼音默认占用
Ctrl+Space和Ctrl+Shift;macOS 下搜狗/百度常劫持Cmd+Shift+L切输入法 - macOS:系统设置 → 键盘 → 快捷键 → 「输入源」或 「Spotlight」是否占用了相同组合;未勾选「使用 F1、F2 等键作为标准功能键」时,
Esc可能被键盘固件吞掉
按键进了 Sublime,但命令不对或没反应
如果控制台输出了 key evt: ctrl+k 这类日志,说明按键已送达,问题出在绑定层。Sublime 加载顺序是:Default → 插件自带的 Default.sublime-keymap → User.sublime-keymap,后加载者静默覆盖前一个:
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件 - 在左侧
Default中搜索目标组合(如"ctrl+d"),确认它原本应触发find_under_expand - 在右侧
User和所有插件目录(Packages/Vintage/、Packages/Emmet/等)中全局搜索相同"keys"字段 - 高危插件优先排查:
Vintage(接管Cmd+D)、Emmet(接管Tab)、Origami、GitGutter
User.sublime-keymap 写错 JSON 就等于没写
这个文件是纯 JSON 数组,语法错一点整份配置就被 Sublime 静默忽略——右下角可能只闪一下红字错误提示,稍不注意就错过:
- 所有键名和字符串值必须用英文双引号包裹,
"keys"不是keys,"toggle_comment"不是toggle_comments - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//注释;想临时禁用某条绑定,要么删整行,要么改成无效命令:"command": "not_a_real_command" - 保存(
Ctrl+S)后立即生效,但若某个插件的Default.sublime-keymap里也有同keys,且加载更晚,你的自定义仍会被盖掉
Esc、Cmd+B 这类键不走 Key Bindings 流程
关闭搜索框、命令面板、替换栏这些行为是 Sublime 内核硬编码逻辑,不读任何 .sublime-keymap 文件:
- 你在
User.sublime-keymap里加{"keys": ["escape"], "command": "hide_panel"}不仅无效,还会破坏原生逻辑——比如按Esc后搜索框不关闭,面板卡住不动 -
Cmd+B在 macOS 下常被 Finder 或 Dock 的系统级快捷键占用,排查路径是:系统设置 → 键盘 → 快捷键 → 应用快捷键,搜索Cmd+B,删掉 Finder 或 Dock 的条目 -
Tab被 Emmet 接管?不是简单禁用就能回退,它的行为由context控制——必须把修复规则写进Preferences → Key Bindings – User,而不是插件自己的 Key Bindings 设置页











