一键格式化json的前提是package control已就位、语法设为json、编码为utf-8无bom、内容合法,四者缺一不可;否则ctrl+alt+j静默失败。

能一键格式化的前提不是“装了插件”,而是 Package Control 已就位、语法设为 JSON、编码是 UTF-8(无 BOM)、内容本身合法——四者缺一不可,否则 Ctrl+Alt+J 按下去毫无反应,连错误提示都没有。
怎么确认 Package Control 真的装好了?
别信“我点过安装”——90% 的失败卡在这一步。按 Ctrl+Shift+P(macOS 是 Cmd+Shift+P)输入 Install Package Control:
• 能搜到,说明已装好,可跳过;
• 搜不到,必须去官网复制最新 Python 安装脚本,粘进 View → Show Console 执行,然后重启 Sublime Text;
• 重启后再次打开命令面板,搜 Install Package,才能继续装插件。
为什么 Ctrl+Alt+J 按了没反应?
不是快捷键坏了,是 Sublime 压根不认当前上下文:
• 右下角状态栏显示的是 Plain Text 或 JavaScript?点它,手动选 JSON(不是 JSON with Comments);
• 文件编码是 UTF-8 with BOM?菜单栏 File → Reopen with Encoding → UTF-8 重载;
• 快捷键被输入法或终端插件劫持?在 Preferences → Key Bindings 用户文件里加一条:{"keys": ["ctrl+alt+j"], "command": "pretty_json", "args": {"type": "json"}, "context": [{"key": "selector", "operator": "equal", "operand": "source.json"}]};
• 插件命令名拼错?按 Ctrl+Shift+P 输入 pretty_json,看是否出现在列表里——json_reindent 是另一个插件的命令。
Pretty JSON 和 JSON Reindent 到底用哪个?
二者行为完全不同,混用会白忙活:
• Pretty JSON:先校验再美化,非法 JSON(如尾随逗号、单引号)会弹窗报错并标出行列;支持中文显示,需在 Preferences → Package Settings → Pretty JSON → Settings 中加 "ensure_ascii": false;
• JSON Reindent:只调整缩进和换行,不校验、不修复、不报错;遇到错误直接静默失败,原文不动;适合你已用 python -m json.tool 验证过的数据;
• 别用 JsFormat 或 JSBeautify 处理纯 JSON——它们当 JS 解析,会把 {"path": "a\b"} 改成 {"path": "a b"}(吃掉反斜杠),后端路径直接失效。
格式化后中文变 u4f60u597d 或缩进混乱?
这不是插件问题,是配置没对齐:
• 中文乱码:确保 Pretty JSON 设置里有 "ensure_ascii": false;
• 缩进忽大忽小:关掉 "detect_indentation": true(设为 false),再统一指定 "indent_size": 2;
• 字段顺序乱了?不是 bug,JSON 标准本身不保证 key 顺序;若强依赖字母序,用 python -m json.tool --sort-keys 或 JSON Reindent 的 Sort Keys 子命令;
• 粘贴进来就排版错乱?先切到 Plain text 语法,用 Ctrl+Shift+P → Set Syntax: Plain text 查看是否有隐藏控制字符(如 u200b)。
真正卡住人的从来不是“怎么按快捷键”,而是光标停在哪、右下角写的是什么、控制台有没有报 ImportError: No module named pathlib——这些细节不扫清,Ctrl+Alt+J 就永远只是个摆设。











