ctrl+c没反应需先确认按键是否进入sublime:运行sublime.log_input(true)后无输出说明被系统或输入法拦截;windows检查nvidia/intel显卡热键及输入法切换,macos检查输入源快捷键;插件可能覆盖快捷键,按加载顺序default→插件→user逐级排查;user.sublime-keymap须严格遵循json格式,禁用注释、多余逗号;esc键不走keymap流程,失效时需检查插件或系统设置。

Ctrl+C没输出?先确认按键是否进了Sublime
很多“快捷键失效”根本不是配置问题,而是按键压根没传进编辑器。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按 Ctrl+C ——如果控制台**完全没反应**,说明系统或外围软件截掉了信号。
常见拦截点:
- Windows:NVIDIA 控制面板 / Intel Graphics Command Center 里默认启用的
Ctrl+Alt+方向键全局热键,会静默吞掉所有Ctrl组合 - 输入法:搜狗、QQ 拼音默认绑定
Ctrl+Space或Ctrl+Shift切换中英文,一按就切走,Ctrl+C根本不往下传 - macOS:系统设置 → 键盘 → 快捷键 → 输入源里是否占用了
Cmd+Space或Ctrl+Space
控制台有 key evt 输出但功能没触发?查加载顺序和覆盖关系
如果控制台打印出类似 key evt: ctrl+c 的日志,说明按键已送达,问题出在 Sublime 内部绑定被覆盖。它的加载顺序是:Default(内置)→ 插件自带的 Default.sublime-keymap → User.sublime-keymap,后加载者直接覆盖前一个,且不报错。
排查方法:
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件 - 在左侧(Default)搜索
"ctrl+c",确认原命令是"command": "copy" - 在右侧(User)和所有插件目录(
Packages/插件名/Default.sublime-keymap)中全局搜索同一"keys"字段 - 重点关注
Vintage、Emmet、Origami、GitGutter这类高危插件,它们常带默认绑定劫持Ctrl+/、Ctrl+Shift+P等核心组合
User.sublime-keymap 写错 JSON 就等于没写
User.sublime-keymap 是纯 JSON 数组,语法错一点整份配置就静默失效,右下角只闪一下红字提示,极易忽略。
必须遵守的硬规则:
- 所有键名和字符串值必须用英文双引号,
"keys"不是keys,更不能用中文引号或单引号 - 数组结尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//或/* */注释;想临时禁用某条绑定,删整行,或改成无效命令:"command": "not_a_real_command" - 修改后按
Ctrl+S保存即生效,无需重启 - 常见低级错误:
toggle_comment写成toggle_comments(多加 s),或keys字段漏掉方括号
Esc 键失效?它不走 keymap 流程
Esc 是 Sublime 的内核级按键,不经过 keymap 加载流程,所以你在 User.sublime-keymap 里写任何关于 Esc 的绑定都无效。
它失效通常只来自两个地方:
- 插件劫持:比如
Vintage(Vim 模式)或Origami(分屏管理)会接管Esc用于退出模式或关闭面板 - 系统级冲突:macOS 的 Spotlight 或 Windows 的某些远程桌面工具会监听
Esc,尤其在全屏状态下
验证方式仍是 sublime.log_input(True):如果按 Esc 后控制台无输出,问题在外围;如果有输出但没反应,基本就是插件在中间拦住了。











