必须将自定义配置写入Pretty JSON.sublime-settings的User文件(菜单栏Preferences→Package Settings→Pretty JSON→Settings–User),而非Default或全局Preferences.sublime-settings;关键参数包括indent、sort_keys、ensure_ascii、use_entire_file_if_no_selection和translate_tabs_to_spaces,且需避免detect_indentation冲突及BOM编码问题。

直接改 Pretty JSON.sublime-settings 用户配置文件
插件行为不按预期走,八成是配置没写对位置。所有自定义必须落在 Pretty JSON.sublime-settings 的 User 配置里,不是全局 Preferences.sublime-settings,也不是插件自带的 Default 文件。
打开方式:菜单栏 Preferences → Package Settings → Pretty JSON → Settings – User。右侧空白处直接写 JSON 对象,比如:
{
"indent": 2,
"sort_keys": true,
"ensure_ascii": false
}
注意:sort_keys 默认为 false,设为 true 后格式化会按字母序重排对象字段,适合配置类 JSON;ensure_ascii 不关掉,中文会变成 \u4f60\u597d;indent 别写成 tab_size,这个插件只认 indent。
use_entire_file_if_no_selection 控制格式化范围
默认不选中任何文本时,Pretty JSON: Format JSON 命令什么也不做——很多人以为插件坏了,其实是它默认只处理选区。想让它自动处理整文件,必须显式开启:
- 在
Pretty JSON.sublime-settings中加"use_entire_file_if_no_selection": true - 该选项不影响已选中文本,只补全“没选时”的行为
- 如果同时开了
validate_on_save,保存时仍只校验当前文件,不受此开关影响
别碰 detect_indentation,它和 Pretty JSON 冲突
全局设置里的 detect_indentation 是 Sublime 自己的缩进探测逻辑,但 Pretty JSON 格式化时完全不读这个值——它只看自己配置里的 indent 和 translate_tabs_to_spaces。如果两者不一致,你会看到格式化后缩进忽空格忽 tab,甚至部分行缩进错位。
解决方法很简单:
- 确保
Pretty JSON.sublime-settings中有"translate_tabs_to_spaces": true - 不要依赖全局
detect_indentation,把它设为false更稳妥(写在Preferences.sublime-settings用户配置里) - 文件打开后手动执行 View → Indentation → Convert Indentation to Spaces,再格式化
验证失败却没报错?检查 validate_on_save 和 BOM
Pretty JSON: Validate 命令能高亮错误位置,但 validate_on_save 开启后静默失败很常见。原因往往不是配置错,而是:
- 文件编码带 BOM:
UTF-8 with BOM会让解析器直接放弃,状态栏不提示、控制台无输出;用 File → Reopen with Encoding → UTF-8 重载即可 -
validate_on_save只在保存动作触发,且仅对当前文件生效;它不会拦截保存,只是弹窗提醒 - 若 JSON 里混了注释(如
//或/* */),即使语法高亮显示为 JSON,验证也会失败——JSON 标准不支持注释
真正容易被忽略的是:Pretty JSON 的验证逻辑不走 Sublime 的语法分析器,它调的是 Python 内置 json.loads(),所以任何非标准扩展(单引号、尾随逗号、注释)都会被当硬错误。











