先确认按键是否进入Sublime:执行sublime.log_input(True),无输出说明被系统/输入法/显卡工具截断,有输出则按加载顺序Default→插件Default→User排查覆盖冲突,JSON语法错误或硬编码键(如Esc)亦会导致失效。

快捷键在 Sublime 里“按了没反应”或“执行了别的命令”,90% 不是配置写错了,而是按键根本没进编辑器,或者被后加载的规则静默覆盖。
怎么确认按键到底进没进 Sublime
这是所有排查的第一步,跳过它直接改 User.sublime-keymap 就是白忙活。
- 按
Ctrl+`打开控制台,输入sublime.log_input(True)回车 - 再按你怀疑失效的组合键(比如
Ctrl+/、Esc、Cmd+Shift+L) - 如果控制台完全没输出,说明信号被系统/输入法/显卡驱动截断了——Sublime 根本没看到这个键
Windows 用户重点查:NVIDIA 控制面板 → 热键、Intel Graphics Command Center → 快捷键、搜狗/QQ 拼音默认的 Ctrl+Shift 切换;macOS 用户去 系统设置 → 键盘 → 快捷键 → Spotlight 和 输入源 里看是否占用了同名组合。
为什么改了 User.sublime-keymap 还是无效
Sublime 的加载顺序是:Default → 插件自带的 Default.sublime-keymap → User.sublime-keymap。后加载的会静默覆盖前一个,且不报错。
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件 - 在左侧
Default中搜索你想用的组合(比如"ctrl+/"),确认它原本绑定的是toggle_comment - 在右侧
User和所有插件目录(Packages/插件名/Default.sublime-keymap)里全局搜索同一"keys"字段 - 常见高危插件:
Vintage、Emmet、Origami、GitGutter,它们常在自己的Default.sublime-keymap里写相同组合
User.sublime-keymap 写错 JSON 就等于没写
这个文件是纯 JSON 数组,语法错一点整份配置就静默失效,右下角可能只闪一下红字提示,极易忽略。
- 所有键名和字符串值必须用英文双引号,
"keys"不是keys - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//注释,想禁用某条绑定,要么删整行,要么改成无效命令:"command": "not_a_real_command" - 常见低级错误:
toggle_comment写成toggle_comments(多加 s)、用中文引号或单引号、keys字段漏方括号
Esc、Cmd+B 这类键根本不在 Key Bindings 管辖范围内
关闭搜索框、命令面板、替换栏这些行为是 Sublime 内核硬编码逻辑,不走任何 .sublime-keymap 流程。
- 你在
User.sublime-keymap里加{"keys": ["escape"], "command": "hide_panel"}不仅无效,还会破坏原生逻辑 - macOS 下
Cmd+B常被 Finder 或 Dock 的系统级快捷键占用,不是插件问题,得去系统设置 → 键盘 → 快捷键 → 应用快捷键里删掉对应条目 - Esc 失效时,先运行
subl --safe-mode:如果恢复,说明是插件劫持(常见于Vintage、Origami);如果仍无效且sublime.log_input(True)无输出,问题在 macOS 未勾选「使用 F1、F2 等键作为标准功能键」或键盘固件层

















