先确认按键是否被系统或输入法截断,再用 sublime.log_input(true) 检测 sublime 是否收到按键;若有输入则用 sublime.log_commands(true) 查命令执行情况;最后排查 keymap 加载顺序、语法错误及插件冲突。

按键根本没进 Sublime 怎么办
先确认按键是否被系统或输入法截断,这是 90% 的“快捷键失效”真实原因。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你怀疑失效的组合键(比如 Ctrl+/ 或 Esc)。如果控制台完全没输出,Sublime 甚至没收到这个键。
Windows 用户重点检查:
- NVIDIA 控制面板 → 「热键」里是否启用了 Ctrl+Alt+方向键
- Intel Graphics Command Center → 「快捷键」是否占用了 Ctrl+Shift 类组合
- 搜狗/QQ 拼音默认拦截 Ctrl+Space 和 Ctrl+Shift,切英文输入法再试
macOS 用户重点检查:
- 系统设置 → 键盘 → 快捷键 → 「Spotlight」是否启用了 Cmd+Space
- 同一页面下「输入源」是否启用了 Cmd+Space 或 Ctrl+Space
- 未勾选「使用 F1、F2 等键作为标准功能键」时,部分键盘固件层会吞掉 Esc
按键进了 Sublime 但功能不对怎么查
如果 sublime.log_input(True) 有输出(如 key evt: ctrl+k),再输 sublime.log_commands(True),再按同一组合键。控制台会显示实际执行的命令,比如 command: emmet_expand_abbreviation —— 这说明不是没绑定,而是被插件抢了。
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 数组,语法错一点整份配置就静默失效,右下角只闪一下红字提示,极易忽略。
必须遵守:
- 所有键名和字符串值用英文双引号,"keys" 不是 keys
- 数组结尾不能多逗号,["ctrl+alt+f"], 是错的,["ctrl+alt+f"] 才对
- 不支持 // 注释,想禁用某条绑定,要么删整行,要么改成无效命令:"command": "not_a_real_command"
- 常见低级错误:toggle_comment 写成 toggle_comments(多加 s)、用中文引号或单引号、keys 字段漏方括号
Esc 键为什么关不了面板
Esc 关闭搜索框、命令面板、替换栏,是 Sublime 内核硬编码行为,不走任何 .sublime-keymap 流程。你在 User.sublime-keymap 里加 {"keys": ["escape"], "command": "hide_panel"} 不仅无效,还会破坏原生逻辑。
如果 Esc 失效:
- 先运行 subl --safe-mode:恢复则坐实是插件劫持(常见于 Vintage、Origami)
- Vintage 插件需进 Preferences → Package Settings → Vintage → Settings,设 "exit_insert_mode_on_escape": false
- Origami 插件关掉其 close_on_escape 选项
- 若 --safe-mode 下仍无效,且 sublime.log_input(True) 无输出,问题在系统或键盘固件层
真正麻烦的不是改配置,而是判断信号在哪一层断掉——系统、输入法、驱动、插件、还是内核硬编码。每层排查手段不同,跳过最外层直接进编辑器改 JSON,大概率白忙活。











