先看按键是否进入Sublime:执行sublime.log_input(True)后无输出即被系统/输入法/驱动截断;有输出则按Default→插件Default→User顺序排查覆盖及JSON语法错误。

怎么确认快捷键到底被谁劫走了
别猜,直接看 Sublime 自己记的账。按 Ctrl+` 打开控制台,输 sublime.log_input(True) 回车,再按那个失效的组合键(比如 Ctrl+/)。如果控制台完全没输出,说明按键在进 Sublime 前就被系统、输入法或显卡驱动吞掉了;如果输出了类似 key evt: ctrl+shift+k 的日志,但功能没触发,才说明是内部绑定冲突。
Windows 用户重点检查 NVIDIA 控制面板或 Intel Graphics Command Center 里的热键设置;macOS 用户去系统设置 → 键盘 → 快捷键 → 输入源,看是否启用了 Cmd+Space 或 Ctrl+Shift 这类切换输入法的组合。搜狗、QQ 拼音等中文输入法默认会拦截这些,切英文输入法再试一次最省事。
为什么改了 User.sublime-keymap 还是无效
因为 Sublime 加载快捷键的顺序是:Default → 插件自带的 Default.sublime-keymap → User.sublime-keymap。后加载的条目会静默覆盖前一个,且不报错、不提示。
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件 - 在左侧
Default中搜索你想用的组合(如"ctrl+d"),确认它原本绑定的是哪个命令 - 在右侧
User和所有插件目录(Packages/Vintage/Default.sublime-keymap等)中全局搜索同一"keys"字段 - 常见高危插件:Vintage、Emmet、Origami、SideBarEnhancements —— 它们的
Default.sublime-keymap很可能已经绑定了你想要的组合
User.sublime-keymap 写错 JSON 就等于没写
User.sublime-keymap 是纯 JSON 数组,不是 JS 对象,也不是配置文件。一个标点错误就会让整份配置静默失效,右下角红字提示一闪而过,极易忽略。
- 必须用英文双引号包裹所有键名和字符串值,例如
"keys"不是keys - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - JSON 不支持
//或/* */注释,想禁用某条绑定,直接删整行,或改成无效命令:"command": "not_a_real_command" - 保存(
Ctrl+S)后立即生效,不用重启,但必须确保没有其他插件在更靠后的位置又绑了一次
Esc、Cmd+B 这些键根本不在 Key Bindings 管辖范围内
关闭搜索框、命令面板、替换栏,是 Sublime 内核硬编码行为,不走任何 .sublime-keymap 流程。你在 User.sublime-keymap 里加 {"keys": ["escape"], "command": "hide_panel"} 不仅无效,还会破坏原生逻辑——比如按 Esc 后搜索框不关闭,面板也不隐藏,UI 就卡在那里。
macOS 下 Cmd+B 常被 Finder 或 Dock 占用,这不是插件问题,而是“应用无关快捷键”行为。排查路径是:系统设置 → 键盘 → 快捷键 → 应用快捷键,搜索 Cmd+B,删掉 Finder 或 Dock 的条目即可。
真正容易被忽略的是 context 条件——有些插件的快捷键只在特定语法(如 Markdown)、有选中文本、或光标在函数体内时才生效。这种情况下,即使绑定存在,也未必触发。

















