ctrl快捷键失灵90%因按键未进入sublime或被插件覆盖:先用sublime.log_input(true)确认信号是否到达;若无输出,检查显卡热键、输入法劫持或系统快捷键;若有输出但功能异常,则按加载顺序排查default、插件及user的keymap冲突,注意json语法严格性。

Ctrl 快捷键在 Sublime 中失灵,90% 不是配置写错了,而是按键压根没进编辑器,或被后加载的插件静默覆盖。
Ctrl 键组合没反应?先看它进没进 Sublime
按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你想查的组合(比如 Ctrl+B、Ctrl+/)。如果控制台完全没输出,说明信号被拦在了外面:
- Windows:NVIDIA 控制面板 → 「热键」、Intel Graphics Command Center → 「快捷键」里常占
Ctrl+Alt+方向键或Ctrl+Shift+B - 中文输入法(搜狗、QQ 拼音)默认劫持
Ctrl+Shift和Ctrl+Space,切英文输入法再试 - macOS:系统设置 → 键盘 → 快捷键 → 「输入源」里关掉
Cmd+Space或Ctrl+Space,否则底层事件可能被吞
按键进了 Sublime,但功能不对?查谁最后绑定了它
如果控制台输出类似 key evt: ctrl+b,说明按键已送达,问题出在绑定层。Sublime 加载顺序是:Default → 插件自带的 Default.sublime-keymap → User.sublime-keymap,后加载者直接覆盖前一个,不报错也不提示:
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件 - 在左侧
Default中搜索"ctrl+b",确认它原本对应build - 在右侧
User和所有插件目录(Packages/Vintage/、Packages/Emmet/等)中全局搜索相同"keys"字段 - 高危插件优先排查:
Vintage(模拟 Vim)、Emmet(缩写展开)、Origami(窗口管理)
User.sublime-keymap 写错一个字符就等于没写
这个文件是纯 JSON 数组,不是 JS 对象,也不是配置文件。语法错一点,整份配置就被 Sublime 静默忽略:
- 所有键名和字符串值必须用英文双引号包裹:
"keys"不是keys,"toggle_comment"不是toggle_comments - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//或/* */注释;想临时禁用某条,要么删整行,要么改成"command": "not_a_real_command" - 改完必须按
Ctrl+S保存,Sublime 会立即重载——但若某个插件的Default.sublime-keymap加载更晚,你的自定义仍会被盖掉
Esc、Ctrl+C 这类键根本不在 keymap 流程里
Esc 关闭搜索框、命令面板、替换栏,是 Sublime 内核硬编码行为,不走任何 .sublime-keymap。你在 User.sublime-keymap 里加 {"keys": ["escape"], "command": "hide_panel"} 不仅无效,还会破坏原生逻辑。
同理,Ctrl+C 复制在多数场景下由系统剪贴板 API 直接处理,不依赖 Sublime 的 command 绑定。如果它失效且 sublime.log_input(True) 无输出,基本可断定是输入法或显卡驱动拦截,而非 Sublime 配置问题。











