快捷键没反应通常因后加载绑定覆盖或系统级拦截;先用sublime.log_input(true)确认按键是否进入sublime,再按加载顺序排查default、插件及user键映射,注意json格式、context条件及esc/cmd+b等内核硬编码键的特殊性。

快捷键没反应,90% 不是 Sublime 坏了,而是你改的那条根本没执行——它被后加载的绑定静默覆盖了。
先确认按键是否真进了 Sublime
按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你想查的组合键(比如 Ctrl+/ 或 Cmd+Shift+P):
- 控制台完全没输出 → 按键被系统、输入法或显卡驱动截断(Windows 查 NVIDIA/Intel 热键,macOS 查「系统设置 → 键盘 → 快捷键 → 输入源」)
- 有输出如
key evt: ctrl+shift+p→ 按键进来了,问题在 Sublime 内部绑定逻辑
查清谁在最后定义了这个快捷键
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 数组,格式错一点就整份失效,右下角红字一闪而过,极易忽略:
- 所有键名和字符串值必须用英文双引号,
"keys"不是keys,"toggle_comment"不是toggle_comments - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//注释;要禁用某条绑定,删整行,或改成无效命令:"command": "not_a_real_command" - 保存(
Ctrl+S)后立即生效,无需重启,但必须确保没有其他插件在更靠后的位置又绑了一次
Esc、Cmd+B 这类键根本不在 keymap 管理范围内
关闭命令面板、搜索框、替换栏这些行为是 Sublime 内核硬编码逻辑,不走任何 .sublime-keymap 流程:
- 在
User.sublime-keymap里加{"keys": ["escape"], "command": "hide_panel"}不仅无效,还会破坏原生 UI 行为(比如按 Esc 后面板卡住不隐藏) - Esc 失效?先运行
subl --safe-mode:若恢复,说明是 Vintage 或 Origami 类插件劫持;若仍无效且sublime.log_input(True)无输出,问题在 macOS 键盘设置或键盘固件层 - Cmd+B 被 Finder/Dock 占用?去「系统设置 → 键盘 → 快捷键 → 应用快捷键」里搜 Cmd+B,删掉对应条目即可
最常被忽略的点:context 条件。有些绑定只在 Markdown 文件里生效,或仅当有选中文本时才触发——光看 keys 字段没用,得连同 context 一起检查。











