Sublime Text 本身无自动排版功能,所谓快捷键实为调用外部工具(如Prettier、Black)的命令;reindent仅对齐缩进,不重构语法结构,需语法正确、缩进统一且禁用trim_automatic_whitespace才生效。

Sublime Text 本身没有“自动排版”功能,所谓快捷键触发的格式化,本质是调用外部工具(如 Prettier、Black、sqlformat)的结果——你按下的不是“排版键”,而是“调用格式化器的命令键”。
reindent 命令 ≠ 自动排版,别被名字骗了
reindent 是 Sublime 内置命令,只做缩进对齐,不改语法结构:
- 它不会移动括号、不调整二元运算符换行、不统一单双引号、不处理空行逻辑
- 仅在当前文件语法识别正确(右下角显示
JavaScript而非Plain Text)、缩进方式统一(全空格或全 Tab)、且trim_automatic_whitespace设为false时才生效 - 如果你按
Ctrl+Shift+P→ 输入Reindent Lines没反应,大概率是语法没选对,或混用了 Tab 和空格
真正能格式化代码的快捷键,得靠插件 + 正确 command 名
比如想用 Prettier 格式化 JS/TS/JSON,需先装 JsPrettier 插件;想格式化 Python,得装 sublime_black。然后在 User.sublime-keymap 中写:
[{"keys": ["alt+shift+f"], "command": "js_prettier"}]注意关键点:
-
command名必须实测获取:按Ctrl+Shift+P输入 “prettier”,看到的完整条目名才是真实值(例如js_prettier,不是prettier或format) - 不能靠网上搜旧教程里的
js_format或beautify,这些大多已失效 - 如果插件带参数(如指定配置路径),必须在
args字段里显式写出,漏掉就静默失败
快捷键配好了却没反应?优先查这三处
常见失效原因非常集中:
- JSON 格式错误:保存后右下角出现红字提示(如逗号多写、引号不闭合、用了中文冒号),但很多人直接忽略
- 被默认规则覆盖:比如你在
User.sublime-keymap里写了"keys": ["f5"],但没加context,而默认文件里已有f5绑定到build,你的规则就无效 - context 限制过严:例如写了
{"key": "selector", "operand": "source.python"},但在.md文件里按快捷键,自然不触发;查当前 scope 可按Ctrl+Shift+P→Show Scope Name
真正起作用的“自动排版”,从来不是 Sublime 自己干的——它只是个调度员。插件是否装对、语法是否识别准确、command 是否最新、JSON 是否合法,四个环节只要一个断掉,快捷键就成摆设。尤其注意 reindent 的能力边界,别拿它当 Prettier 使。


















