Ctrl+C没反应通常因系统或插件拦截:控制台无输出说明被系统层截断(如显卡热键、输入法、macOS快捷键);有输出则属绑定覆盖,按加载顺序(Default→插件→User)排查重写。

Ctrl+C没反应,先看按键进没进Sublime
90% 的“快捷键失效”根本不是 Sublime 的问题,而是按键在抵达编辑器前就被截断了。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按 Ctrl+C —— 如果控制台**完全没输出**,说明信号卡在系统层。
常见拦截点:
- Windows:NVIDIA / Intel 显卡控制面板里启用了
Ctrl+Alt+方向键类热键 - 输入法:搜狗、QQ 拼音默认用
Ctrl+Shift或Ctrl+Space切换中英文,一按就切走 - macOS:系统设置 → 键盘 → 快捷键 → 输入源里占用了
Cmd+Space或Ctrl+Space
插件偷偷覆盖了你的快捷键
如果控制台输出了 key evt: ctrl+c,说明按键已送达,问题出在绑定加载顺序上。Sublime 的规则是“后加载者胜”:Default(内置)→ 插件的 Default.sublime-keymap → User(你写的)。某个插件(比如 Vintage、Emmet、Origami)可能在自己的 keymap 里重写了 ctrl+c,且比你更晚加载。
快速排查方法:
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件 - 左侧(Default)搜
ctrl+c,确认原命令是copy - 右侧(User)和插件目录(
Preferences → Browse Packages)里全局搜索"ctrl+c" - 临时禁用插件:用
Package Control: Disable Package逐个关掉高危插件,重启测试
User.sublime-keymap 写错 JSON 就静默失效
这个文件不是配置语法,是纯 JSON 数组,一个标点错误就会让整段配置被忽略,且不报错——右下角红字提示一闪而过,极易漏看。
必须遵守的硬规则:
- 所有键名和字符串值必须用英文双引号:
"keys",不能是keys或‘keys’ - 数组末尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - JSON 不支持注释,想禁用某条绑定,要么删整行,要么改成无效命令:
"command": "not_a_real_command" - 改完必须按
Ctrl+S保存,Sublime 会立即重载,但若插件里有同 keys 且加载更晚,你的仍会被盖掉
Esc、Tab 这类键根本不能靠 keymap 改
Esc 关搜索框、关命令面板、关替换栏,是 Sublime 内核硬编码行为,Default 和 User 文件里搜不到任何 escape 绑定。同样,Tab 默认插入制表符,且被大量插件(如 Emmet、AutoFileName)深度接管,强行重绑容易导致补全、缩进、路径展开等功能异常。
真正需要避让的,是那些既高频又易冲突的组合:
- 避免用
Ctrl+Space做代码补全:它和输入法切换高度重合,建议改用Alt+Space或Ctrl+Enter - 别碰
Ctrl+Shift+↑/↓做行交换:它实际执行的是move_line_up,且常被 Vintage 的 Normal 模式或 macOS 的 Mission Control 劫持 - 多光标下慎用
Ctrl+C:只复制最后一行,历史记录也只存一条;要批量复制,先按Esc退出多光标再操作











