Sublime Text 默认情况下并不具备 JSON 格式化功能。许多用户按下 Ctrl+Shift+P 后,怎么也搜不到 json_reindent 或 pretty_json 命令,难免感到困惑。其实,这并非操作问题,而是因为尚未安装插件管理器。解决思路很简单,但很多人第一步就卡在了这里。

Package Control 未安装,所有格式化操作均无效
首先需要确认:在 Ctrl+Shift+P 中输入 Install Package Control,如果找不到该命令,则必须手动安装。具体操作为:按下 Ctrl+` 打开控制台,粘贴官网最新的 Python 脚本(2026 年仍可行),回车执行后,务必重启 Sublime Text。重启后,右下角才会出现 JSON 语法选项,插件命令面板才能正常加载。跳过这一步,后续所有操作都将徒劳无功。
为何 JsFormat 和 Pretty JSON 不适合纯 JSON 格式化
很多新手会优先选择 JsFormat 或 Pretty JSON,但这里存在一个常见误区。JsFormat 会将内容当作 JavaScript 解析,导致语义悄悄改变:例如 null 会被转换为 "null" 字符串,字符串中的反斜杠被删除,还可能额外添加多余逗号。而 Pretty JSON 在 Sublime Text 4 上经常报错 ImportError: No module named 'sublime',因为它依赖旧版 Python 环境。这两个插件对 JSON 而言,并非“不够好”,而是“会引发错误”。
那么,真正可靠的选择是什么?
JSON Reindent:仅负责缩进,不进行校验或修复。适用于已通过python -m json.tool yourfile.json验证合法性的场景。HTML-CSS-JS Prettify:基于js-beautify,能自动补充引号、删除单引号、去除尾随逗号,但必须在设置中显式启用"json": true。
格式化前必须满足的三项硬性条件
即使插件和快捷键都已配置完毕,只要以下任一条件不满足,Ctrl+Alt+J 就会静默失败或毫无反应。这一点需要特别留意。
- 右下角状态栏必须显示
JSON(而非Plain Text、JavaScript或JSON with Comments)。点击状态栏手动切换,或使用Ctrl+Shift+P输入Set Syntax: JSON。 - 文件编码必须为
UTF-8,不能是UTF-8 with BOM。BOM 会导致解析器静默失败,可通过File → Reopen with Encoding → UTF-8重新加载。 - 缩进必须统一为空格且宽度为 2。执行
View → Indentation → Convert Indentation to Spaces,再设置Indent Using Spaces。
这里有一个容易被忽视的细节:最常被跳过的步骤正是右下角语言模式和 BOM 编码。这两步不会报错,只会让操作看起来“没有反应”。
HTML-CSS-JS Prettify 的关键配置项
安装插件后,默认对 JSON 文件无响应。必须进入 Preferences → Package Settings → HTML-CSS-JS Prettify → Settings,确保以下配置项明确写入:
"json": true(否则插件会忽略 .json 文件)"detect_indentation": false(否则缩进可能忽大忽小)"indent_size": 2(符合 JSON RFC 推荐值)"ensure_ascii": false(避免中文被转义为u4f60u597d)
建议将快捷键绑定到用户键位文件(Preferences → Key Bindings 右侧):
[{"keys": ["ctrl+alt+j"], "command": "html_css_js_prettify", "args": {"type":"json"}, "context": [{"key":"selector","operator":"equal","operand":"source.json"}]}]
这个 context 是至关重要的——它确保命令只在真正识别为 JSON 语法的文件中生效,避免误触发其他文件。
