先执行sublime.log_input(true),若控制台无输出说明按键被系统/输入法/驱动截断;有输出则执行sublime.log_commands(true),根据key evt和command日志判断是否绑定覆盖或插件劫持。

怎么确认按键有没有进 Sublime
快捷键没反应,第一件事不是翻配置,而是看它到底有没有被编辑器收到。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按那个失效的组合键(比如 Ctrl+Shift+P)。如果控制台**完全没输出**,说明信号在进 Sublime 前就被截了:
• Windows 用户重点查 NVIDIA 控制面板、Intel Graphics Command Center 里的热键设置
• 搜狗/QQ 拼音默认会吃掉 Ctrl+B 或 Ctrl+Shift+B,切英文输入法再试
• macOS 用户去「系统设置 → 键盘 → 快捷键」关掉 Spotlight 和输入源切换项
按键进了但命令没触发,怎么定位绑定覆盖
如果控制台输出了类似 key evt: ctrl+shift+p,说明按键到了,问题出在命令层。接着执行 sublime.log_commands(True),再按同一组合键。这时你该看到类似 command: show_overlay {"overlay":"command_palette"} 的日志。
• 有 key evt 但没 command: 输出 → 绑定被覆盖或 command 名拼错
• 两者都有,但 command 名不是你预期的(比如 toggle_comment 变成 emmet_expand_abbreviation)→ 插件偷偷劫持了
• 全无输出?那问题不在 Sublime,别再改 User.sublime-keymap
User.sublime-keymap 写错 JSON 会静默失效
你改的 User.sublime-keymap 文件只要错一个字符,整份配置就等于没写:
• 必须用英文双引号:"keys" 不是 keys,"command" 不是 command
• 数组末尾不能多逗号:["ctrl+alt+f"], 是错的,["ctrl+alt+f"] 才对
• 不支持 // 或 /* */ 注释;想临时禁用某条,改成 "command": "not_a_real_command"
• 改完必须 Ctrl+S 保存,Sublime 会立即重载,但若某个插件的 Default.sublime-keymap 里也有相同 "keys" 且加载更晚,你的规则还是会被盖掉
怎么快速验证是不是插件冲突
最省事的办法是启动安全模式:
• 终端运行 subl --safe-mode(macOS/Linux)或命令行加 --safe-mode 参数(Windows)
• 如果快捷键恢复了,100% 是插件干的
• 接着用 Package Control: Disable Package 逐个关,不用猜——尤其盯紧 Vintage、Emmet、Origami、Terminus 这些爱重绑热键的插件
• 关到哪个恢复,就去对应插件的 Packages/插件名/Default.sublime-keymap 里搜那个 "keys" 字段,找到源头
真正卡住人的地方往往不是“怎么改”,而是“不知道改哪”。日志开关一开,key evt 和 command: 两条线都摆在眼前,谁在中间动了手脚,一眼就能看见。











