Sublime Text 的自动排版依赖插件命令而非内置功能,真实 command 名需通过命令面板或控制台日志实测获取,快捷键须正确配置在 User.sublime-keymap 中并符合 JSON 格式,且注意语法上下文限制。

Sublime Text 本身没有「自动排版」命令,所谓快捷键绑定的其实是插件提供的格式化命令(如 js_prettier、black、align_table),直接绑 format_code 或 reindent 多数情况下没反应——因为它们要么不存在,要么只做缩进对齐,不重构代码结构。
怎么确认你要绑的真实 command 名
网上搜到的 format_code、js_format 这类名字基本已失效。真实命令名必须实测:
- 按
Ctrl+Shift+P打开命令面板,输入插件功能关键词(比如 “prettier”、“black”、“align table”),看到的完整条目就是你要的command值,例如js_prettier、subl_code_formatter、table_editor_align_table - 更准的方法:按
Ctrl+`打开控制台,输入sublime.log_commands(True),然后手动从菜单或命令面板触发一次目标操作,控制台会输出类似command: js_prettier的日志 - 别信插件文档里写的“默认 command 是 xxx”——不同版本、不同安装方式注册的命令名可能不同
快捷键配置必须写在 User.sublime-keymap
Preferences → Key Bindings 打开后,左侧是只读的默认配置,右侧才是你要编辑的 User.sublime-keymap。它必须是合法 JSON 数组,哪怕只加一条规则:
[{"keys": ["ctrl+alt+l"], "command": "js_prettier"}]
- 保存后立即生效,不用重启;右下角弹红字?八成是 JSON 格式错:多写了逗号、引号没闭合、用了中文标点、括号不匹配
- 如果快捷键没反应,先检查是否绑到了错误的语法类型上——比如你在 .json 文件里按
ctrl+alt+l,但插件只注册了source.js上下文,那就会静默失败 - 想限定语言?加
context字段:{"key": "selector", "operator": "equal", "operand": "source.python"},查当前 scope 可按Ctrl+Shift+P→Show Scope Name
reindent 不是自动排版,别拿它凑数
reindent 是 Sublime 内置命令,只做基础缩进对齐:它不会动括号位置、不调整运算符换行、不统一引号、也不处理空行逻辑。它只在以下条件全满足时才“看起来有效”:
- 右下角状态栏显示的是正确语法(如
JavaScript,不是Plain Text) - 文件缩进风格统一(全空格或全 Tab)——混用时
reindent直接放弃处理 - 设置里
trim_automatic_whitespace为false,否则格式化后末尾空格会被悄悄删掉 - 你真只需要缩进对齐,而不是 Prettier/Black 那种 AST 级重排
真正可靠的自动排版,永远依赖插件 + 外部 CLI 工具(prettier、black、gofmt 等);而快捷键只是触发它们的一层薄皮——哪一环断了(路径没配对、语法没识别、command 名写错、context 限制过死),快捷键就等于没设。


















