快捷键没反应90%是按键未进入sublime,须先用sublime.log_input(true)验证;无输出说明被系统/输入法/驱动截断,有输出再按default→插件→user顺序排查覆盖及json语法错误。

快捷键在 Sublime Text 里“按了没反应”,90% 的情况不是配置写错了,而是按键压根没进到 Sublime —— 它连触发机会都没有。
按键根本没进 Sublime?先用 sublime.log_input(True) 验证
这是所有排查的第一步,跳过它改配置全是白忙活。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你怀疑失效的组合键(比如 Cmd+Shift+P、Ctrl+/、Esc)。
- 如果控制台**完全没输出**,说明 macOS 系统、Windows 显卡驱动、搜狗/百度输入法或 Karabiner 这类工具已拦截,Sublime 什么都没收到
- macOS 用户重点检查:
系统设置 → 键盘 → 快捷键 → 输入源中是否启用了Cmd+Shift+P或Cmd+Space;Windows 用户查 NVIDIA 控制面板或 Intel Graphics Command Center 的热键设置 - 临时切到系统自带「简体中文-拼音」输入法测试,若恢复即锁定是第三方输入法问题
Ctrl+/ 注释失效?别乱改 User.sublime-keymap
汉化插件本身不改快捷键绑定,但很多人在 Preferences → Key Bindings – User 里加了自定义规则,结果被后加载的插件覆盖。Sublime 加载顺序是:Default → 插件 Default.sublime-keymap → User,后加载者静默覆盖前一个。
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件 - 在左侧
Default中搜索"ctrl+/",确认原命令是toggle_comment - 在右侧
User和所有插件目录(Preferences → Browse Packages)中全局搜索"ctrl+/",看谁最后定义了它 - 常见覆盖者:
Vintage、Emmet、SideBarEnhancements;临时运行subl --safe-mode测试,若恢复即为插件干扰
User.sublime-keymap 写错 JSON 就等于没写
这个文件是纯 JSON 数组,不是 JS 对象,也不是配置文件。一个标点错误就会让整份配置静默失效,右下角红字提示一闪而过,极易忽略。
- 所有键名和字符串值必须用英文双引号包裹:
"keys"不是keys,"toggle_comment"不是toggle_comments(多加 s 就失效) - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//或/* */注释;要禁用某条绑定,直接删整行,或改成无效命令:"command": "not_a_real_command" - 保存(
Ctrl+S)后立即生效,但若某个插件的Default.sublime-keymap里也有同keys且加载更晚,你的自定义仍会被盖掉
Esc、Tab、Cmd+B 这些键根本不在 Key Bindings 管辖范围内
关闭搜索框、命令面板、替换栏这些行为是 Sublime 内核硬编码逻辑,不走任何 .sublime-keymap 流程。你在 User.sublime-keymap 里加 {"keys": ["escape"], "command": "hide_panel"} 不仅无效,还会破坏原生逻辑——比如按 Esc 后搜索框不关闭,面板卡住不动。
-
Cmd+B在 macOS 下常被 Finder 或 Dock 的系统级快捷键占用,排查路径是:系统设置 → 键盘 → 快捷键 → 应用快捷键,搜索Cmd+B并删掉相关条目 -
Tab键被 Emmet 接管时,修复代码必须写进Preferences → Key Bindings – User,而不是插件自己的设置页(如Package Settings → Emmet → Key Bindings – User),后者根本不会被加载 - 外接键盘用户务必确认:
系统设置 → 键盘 → 使用 F1、F2 等键作为标准功能键是否勾选——没勾选时,部分键盘固件会把Esc或Backspace映射成其他功能











