sublime text 无法一键对齐单行json,必须先格式化为多行再手动选中键值对用alignment插件对齐;该插件仅视觉对齐冒号,不解析语法、不处理换行、不校验合法性。

Sublime Text 本身不支持“一键对齐 JSON 属性”,所谓“一键”必须拆解为两步:先格式化换行,再手动选中键值对区域用 Alignment 插件对齐;跳过换行直接按 Ctrl+Alt+A,一定无效。
为什么直接对齐单行 JSON 总是失败
Alignment 插件只做视觉列对齐,不解析语法、不负责换行、不识别 JSON 结构。输入 {"name":"Alice","age":25,"city":"Beijing"} 这种单行格式,插件根本找不到换行分隔的“多行”,Ctrl+Alt+A 按了也静默忽略。
- 必须先用
Pretty JSON: Format JSON(或Ctrl+Shift+P→ 输入该命令)把单行展开为合法多行 - 展开后确认右下角语言模式是
JSON,不是Plain Text或JavaScript - 全选 JSON 后执行格式化,若报错,说明含非法字符(如尾随逗号、单引号、
undefined),得先用python -m json.tool校验修复
对齐前必须手动选中正确的范围
Alignment 对齐效果完全取决于你框选了哪些行——选错一行,整块错位。常见错误包括:
- 选中了
{或}行:插件找不到:,直接跳过 - 混入带注释的行(如
// "age": 25):注释被当内容拉偏,冒号列错乱 - 某行漏写值(如
"error"后没:):破坏对齐锚点连续性,后续所有行右移失效 - 正确做法:用
Ctrl+Click(Windows/Linux)或Cmd+Click(macOS)逐行点选键值对,避开空行、括号行、注释行
对齐冒号前后空格要靠配置控制
默认 Alignment 只对齐 : 字符位置,不会自动加/删空格。想让 "name" : "Alice" 变成 "name": "Alice"(冒号后1空格、前0空格),必须改插件配置:
菜单 → Preferences → Package Settings → Alignment → Settings – User,填入:
{
"alignment_chars": [":"],
"alignment_space_chars": [":"]
}
-
"alignment_space_chars"是关键:它告诉插件在:前后统一补/删空格,使其左右间距一致 - 注意:这个配置对所有含
:的行生效,包括"url": "https://a:b@c"里的认证部分,但不影响 JSON 合法性 - 如果对齐后仍不整齐,大概率是原始缩进混用了 Tab 和空格——全选 →
Ctrl+Shift+P→Convert Indentation to Spaces先统一
真正容易被忽略的是:对齐不是格式化,也不保 JSON 合法
Alignment 不校验、不修复、不重排结构。它只管“你选中的这几行里,每个 : 要垂直对齐”。这意味着:
- 文件编码是 UTF-8 with BOM?
Pretty JSON会报错,但 Alignment 照常运行,结果可能乱码 - 用了 PostCSS 变量(如
color: var(--c);)?var(--c)里的:也会被对齐,但括号内容不会被切开——这是预期行为,不是 bug - 对齐完复制出去跑不通?回头检查是否漏了逗号、引号不闭合、或右下角语言模式仍是
Plain Text
别指望插件判断“该不该对齐”,这事只能人来定。选多了,对出 bug;选少了,白按一次。











