sublime text 默认 yaml 高亮不完整,需安装官方 yaml 插件并设为默认语法;ansible/k8s/docker 等场景需额外插件与语法定制;格式化用 yaml formatter,校验靠 sublimelinter+yamllint;自定义后缀须修改 yaml.sublime-syntax 的 file_extensions 并重载。

Sublime Text 默认只对 .yml 和 .yaml 文件做基础高亮,不识别语义、不校验结构、不支持 Jinja2 或 K8s 字段——必须手动装插件、设语法、配路径,否则写错缩进或漏空格都发现不了。
怎么让 .yml 文件真正高亮起来
默认打开 playbook.yml 或 values.yaml,右下角常显示 “Plain Text” 或 “YAML”,但颜色很浅、括号不匹配、关键字无区分。这不是 Sublime 坏了,是它根本没加载对的解析器。
- 先按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Install Package,安装YAML插件(官方维护,非 “Better YAML” 或 “YAML Tools”) - 安装后,打开任意
.yml文件,点击右下角当前语言名 →Open all with current extension as…→ 选YAML - 如果文件已打开但仍是白底黑字,按
Ctrl+Shift+P→ 输入Set Syntax: YAML强制重载一次 - 确认
"detect_indentation": true已开启(Preferences → Settings),避免空格/Tab 混用导致后续所有高亮失效
为什么 {{ item }} 或 kind: Pod 不着色
YAML 插件只管 YAML 结构,不管里面嵌的是 Ansible 变量、Kubernetes 字段还是 Docker Compose 键名。这些需要额外语法层叠加,否则 {{ }} 就是普通字符串,spec.template.spec.containers 全部同色。
- Ansible 场景:装
YAML for Ansible插件(不是 “Ansible Syntax”),装完后右下角手动切到YAML (Ansible);再编辑该插件目录下的YAML (Ansible).sublime-syntax,在contexts里加一行- include: scope:source.jinja,否则| default这类过滤器不会单独着色 - Kubernetes 场景:没有通用插件能自动识别
StatefulSet或CustomResourceDefinition;唯一办法是手动把文件关联为YAML后,配合BracketHighlighter看labels:和spec:是否成对,再用kubectl apply --dry-run=client -f file.yaml构建系统验证 - Docker Compose 场景:装
YAML Language Support,启用后右下角选YAML (Docker Compose);注意docker-compose.prod.yml这类复合后缀不会自动绑定,得进插件的.sublime-syntax文件,在file_extensions里手动加- docker-compose.prod.yml
格式化和校验不能只靠插件
格式化 ≠ 正确,校验 ≠ 逻辑合理。Sublime 的 YAML 插件不做语义检查,image: nginx:laetst(拼错 latest)或 replicas: "3"(字符串而非整数)它完全不报错。
- 格式化推荐装
YAML Formatter(基于ruamel.yaml),设置里确认"allowed_file_extensions"包含".yml"和".yaml",快捷键Ctrl+Alt+L可对齐缩进、补引号、排序 key - 本地校验要装
SublimeLinter+SublimeLinter-contrib-yamllint,并确保终端能跑通yamllint --version(pip install yamllint);它会标出重复 key、多余空格、行末空白等,但不会告诉你serviceAccountName该不该写在spec:下 - Home Assistant 用户额外注意:
Pretty YAML会自动排序 key 并补引号,但 HA 对 key 顺序敏感(如trigger必须在action前),格式化前建议关掉sort_keys选项
自定义后缀(比如 .actrc)怎么生效
Sublime 不会猜你 .actrc 是 YAML,也不会读你项目根目录的 .editorconfig。它只认 file_extensions 列表里明写的后缀,且大小写敏感、缩进必须对齐。
- 打开
Preferences → Browse Packages…→ 进入YAML文件夹 → 编辑YAML.sublime-syntax - 找到
file_extensions:块,在末尾加一行- actrc(注意前面两个空格,和上面其他项对齐) - 保存后,按
Ctrl+Shift+P→ 输入Reload Syntax Definitions,或直接重启 Sublime - 验证:新建
test.actrc,看右下角是否显示YAML;若仍为Plain Text,说明缩进错、拼写错,或没 reload 成功
最易被忽略的一点:所有语法文件(.sublime-syntax)都依赖 scope 字段与主题联动,而绝大多数主题只定义了 source.yaml 的颜色,没定义 source.yaml.ansible 或 source.kubernetes。所以即使你语法规则写对了,也可能全灰——此时不是改语法,而是换主题或手动补 scope 映射。











