第一步用 sublime.log_input(True) 确认按键是否进入 Sublime,无输出则被系统/输入法/驱动拦截;其次排查插件 Default 键绑定覆盖、安全模式验证冲突、User 配置 JSON 语法错误及上下文 context 冲突。

用 sublime.log_input(True) 确认按键是否进到 Sublime
这是第一步,也是最关键的判断依据。如果控制台完全没输出,说明 Ctrl+C、Ctrl+Shift+P 这类组合根本没抵达 Sublime,后续所有键绑定排查都是白忙。
常见拦截点包括:
- Windows:NVIDIA / Intel 显卡控制面板里启用了
Ctrl+Alt+方向键类热键 - 输入法:搜狗、QQ 拼音默认占用
Ctrl+Space或Ctrl+Shift切换中英文 - macOS:系统设置 → 键盘 → 快捷键 → Spotlight 的
Cmd+Space或「输入源」切换快捷键
验证方法:按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按目标组合键。有 key evt: ctrl+shift+p 输出,才进入下一步;没输出,就去关系统/输入法/驱动层热键。
查插件自带的 Default.sublime-keymap 是否覆盖了你的需求
插件的键绑定文件加载顺序在 Default 之后、User 之前,所以即使你写了正确的 User.sublime-keymap,也可能被某个插件悄悄盖掉。
操作路径:
- 菜单 →
Preferences → Browse Packages,打开插件目录 - 逐个进入高危插件文件夹(如
Vintage、Emmet、GitGutter、SublimeCodeIntel),找Default (Windows).sublime-keymap或Default.sublime-keymap - 全局搜索你想查的组合,比如
"ctrl+d",看哪条最后出现
注意:别手动改插件里的文件——每次更新就被覆盖。临时验证可直接禁用插件:Ctrl+Shift+P → Package Control: Disable Package,逐个试。
启动 subl --safe-mode 快速坐实是否插件问题
安全模式下不加载任何插件,只保留原生功能。如果此时 Ctrl+/ 能正常注释、Ctrl+Shift+P 能唤出命令面板,那基本可以断定是插件冲突。
执行方式:
- 命令行输入
subl --safe-mode(需确保subl命令已加入 PATH) - 或 Windows 下右键开始菜单 → “更多” → “以管理员身份运行”,再运行
安全模式生效后,再用 Ctrl+Shift+P 输入 Package Control: Enable Package 逐个启用,观察哪个一开就让快捷键失效。
User.sublime-keymap 写错 JSON 就等于没写
很多人改完保存发现没反应,其实是语法错误导致整份配置被 Sublime 静默忽略,连错误提示都一闪而过。
高频翻车点:
- 用了中文引号或单引号:
{'keys': ['ctrl+alt+f']}❌,必须是英文双引号:{"keys": ["ctrl+alt+f"]}✅ - 数组或对象末尾多逗号:
["ctrl+alt+f"],❌ - JSON 不支持注释,
// {"keys": ...}会让整行失效 - 命令名拼错:
"command": "toggle_side_bar"是对的,"toggle_sidebar"就找不到命令
验证方法:临时清空 User.sublime-keymap 全部内容,保存,再测试快捷键。如果恢复了,问题一定出在用户配置里。
真正麻烦的不是改错,而是多个插件在不同上下文(context)里绑了同一组键——表面查不到重复,实际行为飘忽不定。这种 case 得靠 sublime.log_input(True) 输出的 command: 字段反推,再结合插件文档看它加了哪些 context 限制。


















