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

Ctrl+C没反应?先确认按键是否进了Sublime
很多“快捷键失效”根本不是Sublime的问题,而是按键在进编辑器前就被截掉了。按Ctrl+`打开控制台,输入sublime.log_input(True)回车,再按Ctrl+C——如果控制台完全没输出,说明信号被系统或输入法吞了。
Windows 用户重点检查:
- NVIDIA 控制面板或 Intel Graphics Command Center 里的热键设置
- 搜狗、QQ 拼音默认启用的Ctrl+Shift中英文切换
macOS 用户检查:
- 系统设置 → 键盘 → 快捷键 → 输入源里是否占用了Cmd+Space或Ctrl+Space
插件覆盖了Ctrl+/?查加载顺序比改配置更重要
Sublime 的快捷键绑定按顺序加载:Default → 插件自带的Default.sublime-keymap → User.sublime-keymap,后加载者直接覆盖前者,且不报错。
打开Preferences → Key Bindings,左右并排查看:
- 左侧Default中搜"ctrl+/",确认它原本对应toggle_comment
- 右侧User和插件目录(Preferences → Browse Packages)里全局搜索同一"keys"字段
- 常见“高危插件”:Vintage、Emmet、Origami、SideBarEnhancements
临时验证是否是插件问题:
- Ctrl+Shift+P输入Package Control: Disable Package,逐个关掉上述插件
- 或命令行启动安全模式:subl --safe-mode,如果这时Ctrl+/恢复,就坐实是插件劫持
User.sublime-keymap写错JSON就等于没写
这个文件是纯 JSON 数组,不是 JS 对象,也不是配置文件。一个标点错误就会让整份配置静默失效,右下角红字提示一闪而过,极易忽略。
必须遵守的格式规则:
- 所有键名和字符串值用英文双引号包裹,例如"keys"不是keys
- 数组结尾不能多逗号:["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对
- 不支持//或/* */注释,要禁用某条绑定,直接删整行,或改成无效命令:"command": "not_a_real_command"
- 修改后按Ctrl+S保存即生效,无需重启
Esc 键根本不在 Key Bindings 管辖范围内
关闭搜索框、命令面板、替换栏这些行为是 Sublime 内核硬编码逻辑,不走任何.sublime-keymap流程。你在User.sublime-keymap里加{"keys": ["escape"], "command": "hide_panel"}不仅无效,还会破坏原生逻辑——比如按 Esc 后面板卡住不隐藏。
Esc 失效的真正排查路径:
- 先运行subl --safe-mode,若恢复,说明是插件劫持(Vintage 和 Origami 最常干这事)
- Vintage 插件需进Preferences → Package Settings → Vintage → Settings,设"exit_insert_mode_on_escape": false
- Origami 则关掉其close_on_escape选项
- 若安全模式下仍无效,且sublime.log_input(True)无输出,问题在 macOS 未勾选「使用 F1、F2 等键作为标准功能键」,或键盘固件层拦截











