真正起效的是最后加载的快捷键配置,而非User.sublime-keymap内容本身;需先确认按键是否传入、再查加载顺序与语法正确性,并用super替代ctrl实现跨平台兼容。

直接改 User.sublime-keymap 文件不解决冲突,反而可能让问题更隐蔽——真正起效的不是“你写了什么”,而是“谁最后加载了同一组 keys”。
确认按键是否进入 Sublime Text
这是所有排查的前提。90% 的“快捷键失效”根本不是配置问题,而是按键压根没传进来。
- 按
Ctrl+`打开控制台,输入sublime.log_input(True)回车 - 再按你想查的组合键(比如
Ctrl+/、Cmd+Shift+P) - 如果控制台**完全没输出**,说明被系统/输入法/显卡驱动截断:
- Windows:检查 NVIDIA 控制面板或 Intel Graphics Command Center 的热键设置
- macOS:系统设置 → 键盘 → 快捷键 → 「输入源」里是否占用了同名组合(如
Cmd+Shift+P) - 中文输入法(搜狗、QQ 拼音)默认劫持
Ctrl+Shift和Cmd+Shift+P,切英文再试
查清谁在最后绑定同一组 keys
Sublime 加载快捷键的顺序是:Default.sublime-keymap → 插件目录下的 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、GitGutter
写对 User.sublime-keymap 才算生效
这个文件是纯 JSON 数组,语法错一点,整份配置就静默失效——右下角红字一闪而过,极易忽略。
- 必须用英文双引号:
"keys"不是keys,"toggle_comment"不是toggle_comments - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//或/* */注释;想临时禁用某条绑定,要么删整行,要么改成"command": "not_a_real_command" - 保存(
Ctrl+S)后立即生效,无需重启,但得确保没有插件在更靠后位置又绑了一次相同组合
跨平台键位统一写法(避免 macOS 失效)
别直接复制 Windows 的 ctrl+shift+f 到 macOS,那样在 Mac 上一定无效。
- Sublime 内部用
super表示 macOS 的Cmd键、Windows/Linux 的Ctrl键——这是唯一跨平台语义键名 - 错误写法:
{"keys": ["ctrl+shift+f"], "command": "show_panel", "args": {"panel": "find"}} - 正确写法:
{"keys": ["super+shift+f"], "command": "show_panel", "args": {"panel": "find"}} -
alt在各平台语义一致(macOS Option / Windows Alt),可直接用;ctrl在 macOS 上是 Control 键,极少用于主操作,不要用它替代super
最常被忽略的点:Esc、Cmd+B 这类键根本不在 .sublime-keymap 管辖范围内——它们是 Sublime 内核硬编码行为。你在 User.sublime-keymap 里加 {"keys": ["escape"], "command": "hide_panel"} 不仅无效,还会破坏原生逻辑。


















