先确认按键是否进入sublime:执行sublime.log_input(true)后无输出说明被系统/输入法/驱动截断,有输出则检查加载顺序default→插件default→user及json语法错误。

Ctrl+Shift+P没反应?先确认按键进没进Sublime
90%的“快捷键失效”根本不是Sublime的问题,而是按键在进编辑器前就被截断了。按Ctrl+`打开控制台,输入sublime.log_input(True)回车,再按Ctrl+Shift+P——如果控制台完全没输出,说明信号被系统或输入法吞了。
Windows用户重点查:NVIDIA 控制面板里的热键、Intel Graphics Command Center的快捷键设置;macOS用户去系统设置 → 键盘 → 快捷键里关掉Spotlight和输入源中占用Cmd+Space或Cmd+Shift+P的选项;中文输入法(搜狗、QQ拼音)默认用Ctrl+Shift切语言,切到英文再试。
明明改了User.sublime-keymap,为什么还是不生效
Sublime的快捷键加载顺序是:Default → 插件自带的Default.sublime-keymap → User.sublime-keymap。后加载者覆盖前加载者,且不报错。你写的那条,可能被某个插件(比如Vintage、Emmet、Origami)悄悄覆盖了。
按Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件:
- 在左侧
Default里搜"ctrl+/",确认它原本对应toggle_comment - 在右侧
User和所有插件目录(Preferences → Browse Packages)里全局搜索同一"keys"字段 - 只要某插件的
Default.sublime-keymap里有相同组合,你的User配置就压根不会执行
JSON写错一个字符,整个User配置就静默失效
User.sublime-keymap是纯JSON数组,不是JS对象,也不是INI配置文件。一个多余逗号、漏掉引号、用了中文标点,都会导致整份配置不加载,右下角可能只闪一下红字提示,很容易错过。
必须遵守这些规则:
- 所有键名和字符串值都用英文双引号,例如
"keys",不是keys - 数组末尾不能多逗号:
["ctrl+alt+f"],是错的,["ctrl+alt+f"]才对 - 不支持
//或/* */注释,要禁用某条绑定,直接删整行,或改成"command": "not_a_real_command" - 保存
Ctrl+S后立即生效,不用重启,但得确保没其他插件在更靠后的位置又绑了一次
Esc键关不了命令面板?别碰Key Bindings
Esc关闭搜索框、命令面板、替换栏,是Sublime内核硬编码行为,完全不走任何.sublime-keymap流程。你在User.sublime-keymap里加{"keys": ["escape"], "command": "hide_panel"}不仅无效,还会破坏原生逻辑——比如按Esc后面板卡住不隐藏。
如果Esc真失效了,分两步排查:
- 先运行
subl --safe-mode:如果恢复,说明是插件劫持(常见于Vintage、Origami),进对应插件设置关掉exit_insert_mode_on_escape或close_on_escape - 如果
--safe-mode下仍无效,且sublime.log_input(True)无输出,问题在macOS未勾选「使用 F1、F2 等键作为标准功能键」,或键盘固件层拦截
真正难处理的不是怎么改,而是哪些地方根本不能改——比如Esc这种内核级行为,或者被显卡驱动/输入法提前吃掉的组合键。排查时必须一层层往下凿,跳过log_input这步,后面全白忙活。











