sublime text 实现 json 自动格式化必须依赖插件与精确配置:先安装 package control 并重启,再装 html-css-js prettify,启用 json 支持、关闭 detect_indentation、设 indent_size 为 2、确保编码为 utf-8(无 bom)、右下角语法模式设为 json,最后绑定快捷键 ctrl+alt+j 并限定 context 为 source.json。

Sublime Text 本身不支持自动格式化 JSON,所谓“自动”必须靠插件 + 正确配置组合实现;没有 Package Control 就连插件都装不了,更别说自动触发。
装完 Package Control 才能谈“自动”
按 Ctrl+Shift+P(macOS 是 Cmd+Shift+P)输 Install Package Control,如果没这个命令,说明根本没装。别跳过这步——去官网复制 Python 安装脚本,粘贴进 View → Show Console 执行,然后必须重启 Sublime Text。重启后右下角状态栏才可能显示 JSON 语法选项,插件命令面板才真正可用。
HTML-CSS-JS Prettify 是目前最稳的“自动”方案
它能校验、修复常见错误(比如补引号、删尾随逗号、转单引号为双引号),还支持保存时自动格式化。但默认不启用 JSON 支持,也**不会自动绑定快捷键或适配缩进**:
- 安装后打开
Preferences → Package Settings → HTML-CSS-JS Prettify → Settings,确认"json": true已开启 - 在用户键位文件(
Preferences → Key Bindings右侧)加这条绑定:[{"keys": ["ctrl+alt+j"], "command": "html_css_js_prettify", "args": {"type": "json"}, "context": [{"key": "selector", "operator": "equal", "operand": "source.json"}]}] - 插件设置里必须显式关掉
"detect_indentation": false,否则缩进会忽大忽小;同时设"indent_size": 2 - 确保文件编码是
UTF-8(不是UTF-8 with BOM),BOM 会导致 js-beautify 静默失败
为什么不能用 JsFormat 或 Pretty JSON?
JsFormat 把 JSON 当 JS 解析,会偷偷改结构:比如把 {"a":1} 变成 {"a": 1,}(多加逗号)、把 null 转成字符串 "null",直接破坏数据语义。Pretty JSON 在 ST4 上常报 ImportError: No module named 'sublime',因为它依赖旧版 Python 环境,而 ST4 默认用 Python 3.8+。
“自动格式化”真正生效的三个硬条件
哪怕插件和键位都配好了,只要以下任一条件不满足,ctrl+alt+j 就会毫无反应或原地不动:
- 右下角语言模式必须是
JSON(不是Plain Text、JavaScript或JSON with Comments) - 内容必须是合法 JSON:不能有单引号、尾随逗号、
undefined、NaN或注释;验证方法:终端跑python -m json.tool yourfile.json - 缩进必须统一为空格:执行
View → Indentation → Convert Indentation to Spaces,再设Indent Using Spaces
最容易被忽略的是 detect_indentation 和 UTF-8 with BOM ——前者让缩进策略失控,后者让解析器连错都不报,只默默放弃。











