sublime text 需手动将右下角语法设为 json 才能触发格式化命令;接口响应需先验证 json 合法性,再用 html_css_js_prettify 等支持修复的插件格式化,并关闭 ensure_ascii 以保留中文。

Sublime Text 本身不支持 JSON 格式化,直接粘贴接口返回的 JSON 响应体(比如 {"code":0,"data":{"user":"xxx"}})后,它默认当纯文本处理——你按 Ctrl+Shift+P 搜不到任何格式化命令,不是操作错,是根本没触发条件。
右下角语法必须切到 JSON,否则所有格式化命令都失效
Sublime 不会自动识别文件内容是否为 JSON。哪怕你打开的是 response.json,如果右下角显示的是 Plain Text 或 JavaScript,html_css_js_prettify、json_pretty_print 这些命令就压根不会响应。
- 临时粘贴的接口响应:新建空文件 → 粘贴 JSON 字符串 → 点击右下角语言标识(如
Plain Text)→ 手动选JSON或JSON with Comments - 已保存的 .json 文件:仍需确认右下角是否为
JSON;有时双击打开会误识别为JavaScript,尤其含//注释时 - 快捷键绑定带
context的插件(如html_css_js_prettify),会严格检查source.json作用域,语法不对就静默跳过
别用 JSON Reindent 处理接口响应,它不校验也不修复
接口返回的 JSON 常含非法内容:HTML 实体(")、BOM 头、尾部逗号、单引号键名、未转义换行符。而 JSON Reindent 只缩进,遇到这些直接崩溃或原样输出,不报错也不提示。
- 典型失败现象:按快捷键后光标不动、内容不变、控制台无报错——其实是解析失败被吞了
- 验证方法:把响应体复制进浏览器控制台执行
JSON.parse(你的字符串),或终端运行python -m json.tool,先确认合法再格式化 - 推荐换
html_css_js_prettify:它基于js-beautify,能自动修复常见问题(补双引号、删尾逗号、转义特殊字符),且对中文和 UTF-8 BOM 更鲁棒
中文变 \u4f60\u597d?关掉 ensure_ascii 就行
接口返回的中文字段(如 "msg": "成功")格式化后变成 "msg": "\u6210\u529f",这不是乱码,是插件默认开启 ensure_ascii=true 导致的。日常开发中完全没必要转义。
-
Pretty JSON插件:打开Preferences → Package Settings → Pretty JSON → Settings,把"ensure_ascii"设为false(注意是布尔值,不是字符串) -
html_css_js_prettify:在插件设置里加"json": { "end_with_newline": true, "ensure_ascii": false } - 改完保存,重启 Sublime 或重载文件,中文就能正常显示
快捷键冲突、缩进错乱、格式化空白?先查这三处
这些问题 90% 和插件无关,是 Sublime 自身配置与文件状态没对齐:
-
编码必须是 UTF-8,不是 UTF-8 with BOM:BOM 会导致
js-beautify解析失败,表面看是“格式化后变空”,实际是解析阶段静默退出。用File → Reopen with Encoding → UTF-8强制重载 -
缩进必须统一为空格:执行
View → Indentation → Convert Indentation to Spaces,再设Indent Using Spaces,宽度固定为2 -
禁用 detect_indentation:这个选项在用户设置或插件设置里若为
true,会覆盖你手动设的缩进规则,导致忽大忽小。务必设为false
接口响应体往往来自不同系统,BOM、混合缩进、非法字符是常态,别指望一键解决——先验证合法性,再对齐编辑器状态,最后才轮到格式化。











