不能直接用 ctrl+f9 排 json 键,因其仅按行首字符排序,不理解 json 结构;必须使用支持语义解析的插件(如 pretty json),且满足语法合法、模式设为 json、编码为 utf-8 无 bom 三个前提。

不能直接用 Ctrl+F9 排 JSON 键——它只会按行首字符排序,把 {、"name"、"age" 全搅在一起,结果完全不可用。真正能安全排序 JSON 键的,只有支持语义解析的插件,且必须满足三个前提:语法合法、模式设为 JSON、编码是 UTF-8 无 BOM。
为什么 Sort Lines 对 JSON 键排序会失败
Sublime 的原生 sort_lines 命令只做纯文本行排序,不理解 JSON 结构。你选中一个对象块:
{
"zoo": 1,
"apple": 2,
"banana": 3
}
它会把 { 当作第一行、“zoo”第二行、“apple”第三行……排序后变成:
{"apple": 2,
"banana": 3,
"zoo": 1
}
——看起来对了,但这是巧合;一旦有嵌套、换行或空格缩进,就会错乱。常见错误现象包括:
- 键名被拆到多行,
"name"和:分开排 - 逗号丢失或位置错乱,JSON 直接变非法
- 注释或单引号字段导致整个排序命令静默失败
Pretty JSON 插件开启 sort_keys 是最稳方案
安装 Pretty JSON 后,它能在格式化同时按字母顺序重排键名,且自带语法校验。关键不是“怎么装”,而是“怎么配”:
用于端到端视频本地化流程的轻量编排器,路由至四个专注子技能——/wjs-transcribing-audio、/wjs-translating-subtitles...
- 必须在
Pretty JSON.sublime-settings中显式启用:"sort_keys": true - 若要中文不转义,加一行:
"ensure_ascii": false - 默认无快捷键,需手动绑定,例如在用户键位文件中加:
{"keys": ["ctrl+alt+j"], "command": "pretty_json"} - 执行前务必确认右下角语言模式是
JSON或JSON with Comments,不是Plain Text
触发方式:全选 JSON 内容 → 按快捷键,或 Ctrl+Shift+P 输入 Pretty JSON: Format JSON。
格式化前必须验证三件事,否则白忙活
哪怕插件再好,输进去的是错的,输出就是错的。三件事缺一不可:
-
python -m json.tool yourfile.json能成功输出,才说明语法合法(尾随逗号、单引号、undefined都不行) - Sublime 右下角显示编码是
UTF-8,不是UTF-8 with BOM;BOM 会导致Pretty JSON报Unexpected UTF-8 BOM - 内容必须是完整 JSON 值:不能只是对象片段,也不能混着 JS 变量声明(如
const data = { ... })
验证最快方式:复制 JSON 字符串 → 打开浏览器控制台 → 粘贴 JSON.parse(`...`) 回车,不报错才算过关。
真正麻烦的从来不是插件装不装得上,而是你是否在按下快捷键前,已经确认了数据是干净的、模式是对的、编码是准的——少检查任何一项,sort_keys 就可能输出一个看似整齐、实则无效的 JSON。










