Sublime-Code-Formatter是当前最稳的多语言调度器,不直接格式化,而是按文件类型自动调用black(Python)、prettier(JS/TS)、gofmt(Go)等本地工具;需手动配置各语言执行路径与参数,否则报“Formatter not available”;Windows路径含空格易失败,macOS/Linux须用which prettier获取真实路径。

Sublime-Code-Formatter 是当前最稳的多语言调度器
它不自己格式化,而是按文件类型自动调用对应工具:Python 走 black,JS/TS 走 prettier,Go 走 gofmt,C++ 走 clang-format。比装一堆独立插件更少冲突、路径更可控。
安装后必须手动配置每种语言的执行路径和参数,否则会报 Formatter not available 或 Command not found。比如 Python 默认找 autopep8,但你装的是 black,就得改配置项 python_formatter 为 black,并确保 black 在 PATH 里或写死绝对路径。
- Windows 用户注意:
node.exe或prettier.cmd路径含空格(如C:\Program Files\nodejs\node.exe)会导致调用失败,建议重装到无空格路径,或用短路径如C:\Progra~1\... - macOS/Linux 用户别只填
prettier,得用which prettier拿真实路径,常见位置是/opt/homebrew/bin/prettier或~/.npm-global/bin/prettier - 配置入口统一在
Preferences → Package Settings → Sublime-Code-Formatter → Settings,不是每个子语言单独开设置页
JSON 格式化别再用 JSBeautify 类插件
JSBeautify 和 JsFormat 把 JSON 当 JS 对象解析,会偷偷改结构:删字符串里的反斜杠、把 null 变成 "null"、给对象末尾硬加逗号——这些在 API 响应体或 config 文件里都是致命错误。
真正可用的有三个选择:
-
JSON Reindent:只缩进、不校验,适合你确认 JSON 合法(比如从 curl 拿到的响应),快捷键默认Ctrl+Alt+J -
Pretty JSON:能验证 + 美化 + 折叠,出错时明确提示哪行哪列非法,适合日常开发调试 - Sublime Text 4 用户直接用内置
Indent XML/JSON:不依赖 Node.js、不崩、不报错,只要 JSON 合法就稳,命令在右键菜单或Ctrl+Shift+P搜得到
所有方案都要求:右下角状态栏显示 JSON(不是 Plain Text 或 JavaScript),编码为 UTF-8(不能是 UTF-8 with BOM),缩进设为 spaces 且宽度固定为 2,detect_indentation 必须关掉。
Clang-Format 和 AstyleFormatter 都卡在二进制路径上
这两个插件本身不带格式化引擎,只负责调用系统已安装的 clang-format 或 astyle。90% 的“按了没反应”问题,根源是 Sublime 找不到可执行文件。
验证是否装好:
- 终端运行
clang-format --version或astyle --version,有输出才算真装了 - macOS 用
brew install llvm(带 clang-format),不要只装brew install clang-format(部分镜像源不全) - Windows 推荐从 LLVM 官网下载预编译包,解压后把
bin目录加进系统PATH,或在插件设置里填绝对路径,例如C:\Program Files\LLVM\bin\clang-format.exe
配置位置:
-
Clang-Format插件:进入Preferences → Package Settings → Clang-Format → Settings,填binary字段 -
AstyleFormatter插件:进入Preferences → Package Settings → AStyle Formatter → Settings - User,填astyle_path - 两者都支持 per-language 配置,比如 C++ 用
allman风格,Java 用java风格,但必须显式写在options_default里
快捷键冲突和语法识别是隐形拦路虎
装完插件却按快捷键没反应?大概率不是插件坏了,而是 Sublime 自身状态没对齐。
必须同时满足这三点,命令才会激活:
- 当前文件语法识别正确:右下角状态栏显示
C++、JSON、source.python等,不是Plain Text;若不对,右键 →Set Syntax手动选 - 文件已保存:部分插件(尤其是
Clang-Format)只对磁盘上有路径的文件生效,未保存的临时 buffer 不响应 - 快捷键没被劫持:
Ctrl+Alt+F在 Windows 上常被输入法或远程桌面占用,建议改用Ctrl+Shift+I或Ctrl+Alt+L(和主流 IDE 对齐)
自定义快捷键要加 context 过滤器,否则可能在非目标语言文件里误触发。例如只让 Ctrl+Alt+J 在 JSON 文件生效,就得加:{"key":"selector","operator":"equal","operand":"source.json"}。
多语言混排的文件(比如 Vue 单文件组件)最容易出问题:HTML-CSS-JS Prettify 会乱掉 <script> 块里的缩进,这时别全局格式化,手动选中代码块再执行更安全。


















