必须安装YAML Tools插件,它支持YAML 1.2、自动补冒号与缩进、保留模板变量,且底层调用yamlfmt或ruamel.yaml,比正则替换和SublimePrettyJson更可靠。

YAML格式化插件必须装哪个
Sublime Text 本身不带 YAML 格式化能力,得靠插件。最稳定、更新勤、支持 YAML 1.2 的是 YAMLLint + SublimePrettyJson 组合,但真正能一键对齐缩进、补冒号、规整列表的,只有 YAML Tools(注意不是 YAML 单独那个基础语法高亮插件)。它底层调用的是 yamlfmt 或 Python 的 ruamel.yaml,比纯正则替换靠谱得多。
- 必须用 Package Control 安装
YAML Tools,别手动丢文件夹——否则 ctrl+shift+P 里搜不到 YAML: Format Document
- 安装后默认快捷键是
ctrl+alt+f(Windows/Linux)或 cmd+alt+f(macOS),不是 Sublime 默认的通用格式化键
- 如果按了没反应,大概率是当前文件没被识别为 YAML:右下角状态栏应显示
YAML,不是 Plain text 或 JSON;点一下手动选 Set Syntax → YAML
为什么直接用 “Pretty JSON” 插件会崩SublimePrettyJson 看名字像能处理 YAML,但它只认严格 JSON 语法。YAML 里常见的 !!str、anchored values、literal block scalars (|)、甚至单引号包裹的 'true'(非布尔值),都会被它当成错误直接清空或报 Unexpected token。
- 遇到
ERROR: Invalid JSON string 提示,说明你在用错插件
-
yaml 文件里混了 Ansible 变量 {{ item }} 或 Helm 模板 {{ .Values.replicaCount }}?YAML Tools 能保留,SublimePrettyJson 会删掉整个字段
- 不要为了省事把
.yml 文件强行切到 JSON 语法模式——缩进逻辑完全不同,格式化后八成是非法 YAML
缩进和冒号自动补全怎么开YAML Tools 默认不自动补全 : 和缩进,得手动开。否则写 env: 回车后光标不会自动缩进两格,后续字段容易错层。
- 打开
Preferences → Package Settings → YAML Tools → Settings
- 在用户设置里加这几行:
{
"auto_insert_colon": true,
"auto_indent_on_enter": true,
"indent_width": 2
}
-
"indent_width": 2 很关键:Kubernetes 和大多数 CI 文件约定用 2 空格,设成 4 会导致 kubectl apply 报 did not find expected key
- 改完不用重启,但已有文件需重新触发格式化才生效(比如删个空格再
ctrl+alt+f)
格式化后字段顺序乱了怎么办
YAML 规范本身不保证字段顺序,但很多工具(如 helm template、kustomize)依赖 apiVersion、kind、metadata 出现在前面。原生 YAML Tools 用 ruamel.yaml 解析时会重排,且不提供“保持顺序”开关。
- 真需要保序,只能换方案:在终端用
python -m ruamel.yaml --preserve-quotes --width 999 file.yml 手动跑,再拖回 Sublime
- 或者接受现实:只要缩进、冒号、引号合法,顺序不影响 k8s 解析——
kubectl 本身就不看字段顺序
- 别试图用正则排序字段,
.<em>\n.</em>\n 类匹配在多级嵌套里极易误伤注释和字符串内容
YAML Tools,别手动丢文件夹——否则 ctrl+shift+P 里搜不到 YAML: Format Document
ctrl+alt+f(Windows/Linux)或 cmd+alt+f(macOS),不是 Sublime 默认的通用格式化键YAML,不是 Plain text 或 JSON;点一下手动选 Set Syntax → YAML
SublimePrettyJson 看名字像能处理 YAML,但它只认严格 JSON 语法。YAML 里常见的 !!str、anchored values、literal block scalars (|)、甚至单引号包裹的 'true'(非布尔值),都会被它当成错误直接清空或报 Unexpected token。
- 遇到
ERROR: Invalid JSON string提示,说明你在用错插件 -
yaml文件里混了 Ansible 变量{{ item }}或 Helm 模板{{ .Values.replicaCount }}?YAML Tools能保留,SublimePrettyJson会删掉整个字段 - 不要为了省事把
.yml文件强行切到JSON语法模式——缩进逻辑完全不同,格式化后八成是非法 YAML
缩进和冒号自动补全怎么开YAML Tools 默认不自动补全 : 和缩进,得手动开。否则写 env: 回车后光标不会自动缩进两格,后续字段容易错层。
- 打开
Preferences → Package Settings → YAML Tools → Settings
- 在用户设置里加这几行:
{
"auto_insert_colon": true,
"auto_indent_on_enter": true,
"indent_width": 2
}
-
"indent_width": 2 很关键:Kubernetes 和大多数 CI 文件约定用 2 空格,设成 4 会导致 kubectl apply 报 did not find expected key
- 改完不用重启,但已有文件需重新触发格式化才生效(比如删个空格再
ctrl+alt+f)
格式化后字段顺序乱了怎么办
YAML 规范本身不保证字段顺序,但很多工具(如 helm template、kustomize)依赖 apiVersion、kind、metadata 出现在前面。原生 YAML Tools 用 ruamel.yaml 解析时会重排,且不提供“保持顺序”开关。
- 真需要保序,只能换方案:在终端用
python -m ruamel.yaml --preserve-quotes --width 999 file.yml 手动跑,再拖回 Sublime
- 或者接受现实:只要缩进、冒号、引号合法,顺序不影响 k8s 解析——
kubectl 本身就不看字段顺序
- 别试图用正则排序字段,
.<em>\n.</em>\n 类匹配在多级嵌套里极易误伤注释和字符串内容
Preferences → Package Settings → YAML Tools → Settings
{
"auto_insert_colon": true,
"auto_indent_on_enter": true,
"indent_width": 2
}
"indent_width": 2 很关键:Kubernetes 和大多数 CI 文件约定用 2 空格,设成 4 会导致 kubectl apply 报 did not find expected key
ctrl+alt+f)helm template、kustomize)依赖 apiVersion、kind、metadata 出现在前面。原生 YAML Tools 用 ruamel.yaml 解析时会重排,且不提供“保持顺序”开关。
- 真需要保序,只能换方案:在终端用
python -m ruamel.yaml --preserve-quotes --width 999 file.yml手动跑,再拖回 Sublime - 或者接受现实:只要缩进、冒号、引号合法,顺序不影响 k8s 解析——
kubectl本身就不看字段顺序 - 别试图用正则排序字段,
.<em>\n.</em>\n类匹配在多级嵌套里极易误伤注释和字符串内容
YAML 格式化的本质不是“变好看”,是让机器能稳稳读进去。缩进差一格、多一个空格、少一个换行,都可能让 CI 流水线卡在 yaml: line X: did not find expected key。别信“差不多”,格式化插件选错、配置漏一项,就等于白按那一下 ctrl+alt+f。










