先确认按键信号是否进入Sublime:按Ctrl+`打开控制台,执行sublime.log_input(True),再按快捷键;无输出说明被系统或输入法拦截,有输出但未触发则存在绑定冲突。

装了格式化插件却按不动 Ctrl+Alt+F 或 Ctrl+Shift+H?不是插件没装好,是快捷键被系统、输入法或别的插件悄悄劫走了。
怎么确认按键信号进了 Sublime?
这是所有排查的第一步。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按你想用的组合键(比如 Ctrl+Alt+F):
- 控制台完全没输出 → 信号在进 Sublime 前就被截断:Windows 查 NVIDIA/Intel 显卡热键、搜狗/QQ 拼音的
Ctrl+Shift切换;macOS 查「系统设置 → 键盘 → 快捷键 → 输入源」是否占用了同名组合 - 控制台有
key evt: ctrl+alt+f日志,但没触发格式化 → 真正的绑定冲突,继续往下查
为什么改了 User.sublime-keymap 还是不生效?
Sublime 的快捷键加载顺序是:Default → 插件自带的 Default.sublime-keymap → User.sublime-keymap。后加载者直接覆盖前加载者,且不报错。常见“高危插件”包括 Vintage、Emmet、SideBarEnhancements,它们常在自己的 Default.sublime-keymap 里偷偷绑了 Ctrl+Alt+F 或 Ctrl+Shift+H。
- 按
Ctrl+Shift+P输入Preferences: Key Bindings,左右并排打开两个文件 - 左侧 Default 中搜
ctrl+alt+f,确认它原本该对应哪个命令(比如js_prettier或black) - 右侧 User 和所有插件目录(
Preferences → Browse Packages)里全局搜索同一"keys"字段 - 找到冲突项后,要么删掉插件里的绑定(不推荐),要么在 User 中用更明确的
context加限定,或干脆换一个唯一组合,比如["ctrl+shift+alt+f"]
格式化插件该用哪个快捷键才不容易撞车?
别硬刚常用组合。原生 Ctrl+Shift+I(HTML)、Ctrl+Alt+F(JS)、Ctrl+Shift+H(Emmet)全是重灾区。建议统一走自定义路径:
- 打开
Preferences → Key Bindings – User - 写入合法 JSON(注意:必须英文双引号、数组末尾不能多逗号、不支持
//注释):
[
{
"keys": ["ctrl+shift+alt+f"],
"command": "js_prettier",
"context": [
{ "key": "selector", "operator": "equal", "operand": "source.js, source.ts, source.jsx, source.tsx" }
]
},
{
"keys": ["ctrl+shift+alt+b"],
"command": "black",
"context": [
{ "key": "selector", "operator": "equal", "operand": "source.python" }
]
}
]
-
context很关键:避免在 Markdown 或 Plain Text 里误触发,也减少跨语言冲突 - 保存即生效,不用重启;但若某插件在更靠后位置又绑了一次同 key,仍会被覆盖
格式化失败还可能是语法识别错了
右下角显示 Plain Text?那插件根本不会启动。格式化只对正确语法类型生效:
- 手动点右下角切换成
JavaScript、Python或HTML - 或先保存文件为
.js、.py、.html后缀,让 Sublime 自动识别 -
HTML-CSS-JS Prettify在.vue或.svelte文件里容易乱缩进,此时应关掉自动触发,只手动选中代码块再执行 - 验证插件是否真加载:按
Ctrl+Shift+P输入JsPrettier回车,看是否执行;若不执行,说明插件根本没加载成功
真正麻烦的不是配错快捷键,而是配完发现它只在某种语法下生效、某个插件禁用后又冒出来、或者 context 写漏一个条件就静默失效——这些细节不盯住,改十次都白搭。


















