reindent仅重排缩进,非一键美化:它只按语言规则推算缩进层级,不改换行、不加空格、不校验语法;对python用4空格,对js/html对齐大括号,但不拆长语句或补空格;失效主因是语法识别为plain text、选区不完整或未闭合内容;需手动绑定快捷键并显式设"single_line": false;现代语法和混合内容需jsprettier等插件支持。

reindent 只重排缩进,不是“一键美化”
Sublime 自带的 reindent 命令不改换行、不加空格、不校验语法,只按当前语言规则推算缩进层级。它对 Python 是 4 空格,对 JS/HTML 是大括号嵌套对齐,但不会把 return { a: 1, b: 2 } 拆成多行,也不会在 function() { 中间加空格。
常见失效场景:
- 右下角显示
Plain Text—— 必须手动点状态栏切换为JavaScript、Python等 - 选区跨括号层级,比如选中了开头的
{但没包含结尾的} - 选区内混有未闭合字符串、HTML 中嵌 JS 片段、或注释格式混乱
快捷键必须手动绑定,且参数不能漏
Sublime 默认没给 reindent 配快捷键。直接按 Ctrl+Shift+P → 输入 reindent 回车能临时用,但想固定用快捷键,得写 JSON 到 Preferences → Key Bindings – User:
[{"keys": ["ctrl+shift+r"], "command": "reindent", "args": {"single_line": false}}]
关键点:
-
"single_line": false必须显式写上,否则光标在哪就只缩进那一行 - 整个数组用方括号包裹,每条规则后加逗号,末尾不能多逗号
- 别用
Ctrl+Shift+F—— 这个键位常被输入法或插件占用
JS/TS/HTML/CSS 要用 JsPrettier 或 HTML-CSS-JS Prettify
reindent 不支持现代语法(如可选链、装饰器)和跨语言混合内容。真要格式化 JS/TS,得装 JsPrettier 并配好本地 prettier CLI:
- 先运行
node -v和npm -v确认 Node.js 已安装 -
npm install -g prettier,Windows 下路径常是C:/Users/xxx/AppData/Roaming/npm/prettier.cmd - 进
Preferences → Package Settings → JsPrettier → Settings,填入"prettier_cli_path" - 快捷键建议设为
Ctrl+Alt+F,但得先确认没被SideBarEnhancements等插件占用
HTML/CSS 用 HTML-CSS-JS Prettify 更轻量,但它默认只格式化整文件;局部格式化需全选后再触发,且右下角必须是 HTML 或 CSS,不是 Plain Text。
Alignment 插件只做视觉对齐,别当格式化器用
Alignment 的作用极其有限:它只按 =、:、; 这类字符对齐多行文本,不解析语法、不处理缩进、不重排结构。例如能把:
name="Alice" age=30 is_active=True
变成左右对齐,但不会修 if 块缩进,也不会把长 import 拆行。
触发条件很明确:
- 必须手动选中至少两行
- 快捷键是
Ctrl+Alt+A(Win/Linux)或Cmd+Alt+A(macOS) - 它对语法模式无依赖,但若其它插件拦截了快捷键,也会静默失败
真正容易被忽略的是:哪怕你绑好了所有快捷键、选对了语法、也全选了代码,reindent 和插件仍可能因 CLI 路径错、JSON 格式坏、或 Node.js 环境缺失而完全没反应——这时打开 Sublime 控制台(Ctrl+`)看报错,比反复重装插件更有效。











