Sublime的Default快捷键被静默覆盖而非冲突,因加载顺序为Default→插件Default→User,后加载同keys绑定直接替换前者;排查需用Ctrl+Shift+P打开键绑定文件,左右对比并全局搜索所有.sublime-keymap文件。

Sublime 的 Default 快捷键被覆盖,不是“冲突”而是“被静默替换”——它根本不会报错或提醒你,只要后加载的绑定里有相同 keys,就直接生效,前一个彻底作废。
怎么确认是不是被插件 Default 覆盖了
Sublime 加载顺序是:Default.sublime-keymap → 插件自带的 Default.sublime-keymap → User.sublime-keymap。中间层(插件)最容易被忽略,但恰恰最常出问题。
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件 - 在左侧(Default)搜索你想用的组合,比如
"ctrl+/",记下它原本对应的command(通常是toggle_comment) - 在右侧(User)搜同一组
keys,没找到?别松气——去Packages/目录下翻插件,重点看Vintage/、Emmet/、Origami/这些目录里的Default.sublime-keymap - 用系统自带的文本搜索(如 macOS 的 Spotlight 搜
"ctrl+/",Windows 用 Everything),全局扫一遍所有.sublime-keymap文件
为什么改了 User 还是不生效
User.sublime-keymap 是最后一层,但前提是它能被正确加载。一个标点错误,整份配置就归零。
- 必须是合法 JSON 数组:开头
[,结尾],哪怕空着也得写[] - 所有键名和字符串值必须用英文双引号,
"keys"不是keys,"toggle_comment"不是toggle_comment - 数组末尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持任何注释:
//或/* */会让整个文件失效;想临时禁用某条,删整行,或改成"command": "not_a_real_command" - 改完必须
Ctrl+S保存,Sublime 不会自动重载未保存的变更
Esc、Cmd+Shift+P 这类键为什么特别难调
它们根本不在 keymap 系统管辖范围内——Esc 关面板、关搜索框是内核硬编码行为;Cmd+Shift+P 在 macOS 上默认被 Spotlight 截获,Sublime 压根收不到。
- 验证方式:按
Ctrl+`打开控制台,输入sublime.log_input(True),再按Esc或Cmd+Shift+P;如果控制台**完全没输出**,说明问题在系统/输入法/显卡驱动层 - macOS 用户优先检查「系统设置 → 键盘 → 快捷键」里 Spotlight 和「输入源」是否占用了同款组合
- Windows 用户重点查 NVIDIA 控制面板或 Intel Graphics Command Center 的热键开关
- 不要试图在
User.sublime-keymap里绑定escape——这不仅无效,还可能破坏 UI 响应逻辑
真正麻烦的从来不是怎么加一条新快捷键,而是搞清哪一层先动了手、哪一层根本没收到信号。尤其当多个插件都往 Default.sublime-keymap 里塞规则时,光看 User 文件等于只看了半张地图。

















