Sublime Text 无原生自动排版功能,所有“一键整理”均依赖插件调用外部CLI工具;reindent仅做基础缩进对齐,不处理括号、运算符、引号或空行;各语言格式化需严格满足环境、路径、配置及语法模式要求。

Sublime Text 本身不支持自动排版,所谓“一键整理”全是插件调用外部 CLI 工具(如 prettier、black、sqlformat)的结果——没装对工具、路径不对、语法模式错、配置漏项,任意一个环节断掉,格式化就静默失效。
为什么 reindent 不是自动排版
reindent 是 Sublime 内置命令,只做基础缩进对齐:它不改括号位置、不调整运算符换行、不统一引号、也不处理空行逻辑。它只在当前语法识别正确、且缩进设置一致(比如全用空格)时才生效。
- 右下角状态栏显示
Plain Text?reindent直接不响应 - 文件里混用了
Tab和空格?它会跳过整段,不报错也不提示 - 设置了
"trim_automatic_whitespace": true?格式化后末尾空格被悄悄抹掉,可能破坏 Git diff 或配置文件语义
JsPrettier 调用 prettier 失败的三大硬性条件
装了 JsPrettier 插件 ≠ 能用。它本质是调本地 prettier CLI,必须同时满足:
-
node -v在终端能返回版本,且prettier命令可执行(macOS/Linux 运行which prettier,Windows 运行where prettier) - 插件配置里
prettier_cli_path必须填绝对路径(Windows 要带.cmd后缀,如C:\Users\xxx\AppData\Roaming\npm\prettier.cmd) -
use_stdin设为true,否则读不到当前文件内容,尤其对含 BOM 的 UTF-8 文件容易解析失败
改完配置必须重启 Sublime,插件不热重载。
Python 格式化别碰 autopep8,直接上 black
autopep8 对现代 Python 特性支持弱,遇到 f"hello {name}" 或 def foo(x: str) -> None: 可能直接抛 invalid syntax。而 black 风格统一、无需配置、兼容性好。
- 终端运行
pip install black,确认black --version可执行 - 插件名是
sublime_black(不是Black或python-black),通过 Package Control 搜索安装 - 快捷键建议绑定为
ctrl+alt+b,避免和HTML-CSS-JS Prettify的ctrl+shift+h冲突
JSON 格式化失败?先验证合法性再动手
Pretty JSON 插件不修复语法错误,只格式化合法 JSON。单引号、尾随逗号、// 注释、未闭合括号都会导致静默失败——光标不动、无提示、内容原样。
- 验证方式:复制内容到浏览器 Console 执行
JSON.parse(),或终端运行python -m json.tool yourfile.json - 文件语法模式必须是
JSON(右下角点开手动选),不能是JavaScript或Plain Text - 没选中文本时格式化整文件;若只选了一段,就只处理那段——日志里混着非 JSON 内容时,务必先手动框选目标片段
真正麻烦的不是装插件,而是每个语言背后都绑着一个外部命令、一套环境路径、一种语法识别逻辑。少配一个字段,按烂快捷键也不会动一格缩进。


















