先确认按键是否进入sublime:执行sublime.log_input(true)无输出说明被系统/输入法/驱动截断;有输出则检查加载顺序(default→插件default→user)、context条件及json语法错误。

Sublime Text 里快捷键“按了没反应”或“功能不对”,90% 不是配置写错了,而是按键根本没进编辑器,或者被后加载的插件绑定静默覆盖——你改的那条 User.sublime-keymap 可能压根没执行。
怎么确认按键是否进了 Sublime?
这是所有排查的第一步。跳过它直接改 JSON,等于蒙眼调参。
- 按
Ctrl+`打开控制台,输入sublime.log_input(True)回车 - 再按你想查的组合键(比如
Ctrl+/、Esc、Cmd+Shift+P) - 如果控制台完全没输出(连
key evt: ctrl+shift+p都没有),说明信号在进 Sublime 前就被截断了
常见拦截点:
- Windows:NVIDIA 控制面板 → 「热键」、Intel Graphics Command Center → 「快捷键」启用了同名组合
- macOS:系统设置 → 键盘 → 快捷键 → 「输入源」里「选择上一个输入法」默认占了
Cmd+Space或Cmd+Shift+P - 中文输入法(搜狗、QQ 拼音)默认劫持
Ctrl+Shift和Ctrl+Space,切英文输入法再试
按键进了 Sublime,但功能不对?查实际执行的命令
如果 sublime.log_input(True) 有输出,说明按键进来了;下一步看它到底触发了谁。
- 控制台里再输
sublime.log_commands(True)回车 - 重按同一组合键,观察输出,比如
command: emmet_expand_abbreviation—— 这说明不是没绑定,而是被 Emmet 抢了 - 两者都有输出,但 command 名不是你预期的(比如
toggle_comment变成emmet_expand_abbreviation),就是插件覆盖了
Sublime 加载顺序固定:Default → 插件的 Default.sublime-keymap → User.sublime-keymap。后加载者静默覆盖前一个,不报错也不提示。
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开 Default 和 User - 在左侧 Default 中搜索
"ctrl+/",确认它本该调用toggle_comment - 在右侧 User 和所有插件目录(
Packages/Vintage/、Packages/Emmet/等)中全局搜索"keys": ["ctrl+/"] - 高危插件优先查:Vintage、Emmet、Origami、SideBarEnhancements
User.sublime-keymap 写错 JSON 就等于没写
这个文件是纯 JSON 数组,语法错一点整份配置就静默失效,右下角红字一闪而过,极易忽略。
- 必须用英文双引号:
"keys"不是keys,"toggle_comment"不是toggle_comments(多加 s 就失效) - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//或/* */注释;想临时禁用某条,要么删整行,要么改成"command": "not_a_real_command" - 保存(
Ctrl+S)后立即生效,无需重启——但得确保没其他插件在更靠后位置又绑了一次相同组合
Esc 键失效?别碰 Key Bindings
Esc 关搜索框、关命令面板、关替换栏,是 Sublime 内核硬编码行为,完全不走任何 .sublime-keymap 流程。
- 你在
User.sublime-keymap里加{"keys": ["escape"], "command": "hide_panel"}不仅无效,还会破坏原生逻辑(比如按完 Esc 后面板卡住不隐藏) - 如果
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)无输出,问题大概率在 macOS 未勾选「使用 F1、F2 等键作为标准功能键」,或键盘固件层











