快捷键失效时,90% 是按键未进入 Sublime 或被插件静默覆盖;需先用 sublime.log_input(True) 确认输入是否抵达编辑器,再按加载顺序排查 Default、插件、User 绑定,并检查 JSON 语法及系统/输入法/驱动拦截。

快捷键失效时,90% 不是 Sublime 坏了,而是按键根本没进编辑器,或被后加载的插件绑定静默覆盖——直接改 User.sublime-keymap 很可能白忙活。
怎么确认按键到底进没进 Sublime
这是所有排查的第一步。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你怀疑失效的组合键(比如 Ctrl+/、Cmd+Shift+P)。
- 如果控制台完全没输出,说明信号被系统/输入法/显卡驱动截断了:Windows 用户检查 NVIDIA 控制面板或 Intel Graphics Command Center 的热键设置;macOS 用户去「系统设置 → 键盘 → 快捷键 → 输入源」禁用「选择上一个输入法」;搜狗、QQ 拼音等中文输入法默认劫持
Ctrl+Shift和Cmd+Shift+P,临时切到系统自带「简体中文-拼音」验证 - 如果有输出(如
key evt: ctrl+shift+k),说明按键进了 Sublime,问题出在内部绑定逻辑,继续往下查
为什么清空 User.sublime-keymap 还是没用
因为 Sublime 加载快捷键的顺序是:Default → 插件自带的 Default.sublime-keymap → User.sublime-keymap。后加载者静默覆盖前一个,不报错也不提示。
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件 - 在左侧
Default中搜索目标组合(如"ctrl+/"),确认它原本应触发toggle_comment - 在右侧
User和所有插件目录(Packages/Vintage/、Packages/Emmet/等)中全局搜索相同"keys"字段 - 高危插件优先排查:
Vintage、Emmet、Origami、SideBarEnhancements
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)后立即生效,无需重启
Esc、Cmd+B 这类键根本不在 Key Bindings 管辖范围内
关闭搜索框、命令面板、替换栏这些行为是 Sublime 内核硬编码逻辑,不走任何 .sublime-keymap 流程。
- 你在
User.sublime-keymap里加{"keys": ["escape"], "command": "hide_panel"}不仅无效,还会破坏原生逻辑 -
Esc失效时,先运行subl --safe-mode:如果恢复,说明是插件劫持(常见于Vintage或Origami);若仍无效且sublime.log_input(True)无输出,问题在 macOS 未勾选「使用 F1、F2 等键作为标准功能键」或键盘固件层 -
Cmd+B在 macOS 下常被 Finder 或 Dock 占用,去「系统设置 → 键盘 → 快捷键 → 应用快捷键」里搜索并删掉对应条目


















