Sublime Text 需同时安装 SublimeLinter、SublimeLinter-contrib-yamllint 和系统级 yamllint CLI 才能校验 YAML 语法;yamllint 仅检查规范(如缩进、冒号、重复 key),不校验业务逻辑,须配合 homeassistant --check-config 或 kubectl --dry-run 等工具分层防御。

Sublime Text 默认不校验 YAML,保存时不会报错,缩进错两格、漏个冒号、重复 key,全靠肉眼发现——等 kubectl apply 或 homeassistant --check-config 报错才反应过来,已经晚了。
装对插件组合才能真校验
只装 SublimeLinter 框架没用,它不带任何检查能力;只装 YAML 语法高亮也不行,那只是颜色变化。必须三者齐备:
-
SublimeLinter(主框架) -
SublimeLinter-contrib-yamllint(YAML 专用检查器) - 系统级
yamllintCLI 工具(pip install yamllint)
缺任一环,状态栏都只会显示 “0 errors, 0 warnings”,实际文件可能根本无法被解析。验证是否生效:打开一个明显缩进错误的 YAML 文件,保存后看右下角是否出现黄色警告图标和数字。
为什么 yamllint 报错但文件能跑通?
yamllint 默认检查的是 YAML 语法规范(如禁止 tab 缩进、禁止 trailing spaces、禁止重复 key),不是业务逻辑。它不会告诉你 service: non_existent_service 是否真实存在,也不会校验 entity_id: light.living_room 在 Home Assistant 中是否存在。
这类语义错误需要更上层工具:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- Home Assistant 用户:配合
homeassistant --check-config构建系统(Build System)做二次校验 - Kubernetes 用户:用
kubectl apply --dry-run=client -f $file验证字段合法性 - GitHub Actions 用户:需额外绑定
act或 GitHub 官方 schema 进行字段级校验
换句话说:yamllint 是“语法警察”,不是“业务顾问”。别指望它拦住所有部署失败。
常见失效场景和绕过方法
即使插件都装了,也常因以下原因静默失效:
-
PATH问题:Sublime 启动时未继承 shell 的PATH,找不到yamllint命令 → 在 Sublime 的Preferences → Package Settings → SublimeLinter → Settings中显式配置"executable": "/usr/local/bin/yamllint"(macOS/Linux)或"executable": "C:\Python39\Scripts\yamllint.exe"(Windows) - 语法识别失败:文件后缀不是
.yaml或.yml(比如.actrc、configuration.yaml)→ 点击右下角语法名 →Open all with current extension as… → YAML;若仍无效,手动编辑Packages/YAML/YAML.sublime-syntax,在file_extensions列表末尾加一行- actrc(注意缩进对齐) - lint_mode 未设为 save:默认是
on_save,但部分用户误设为background导致卡顿 → 检查 SublimeLinter 设置中是否有"lint_mode": "save"
别依赖单一校验,分层防御更可靠
真正防错不是靠一个插件,而是把校验嵌进工作流里:
- 编辑时:靠
yamllint拦基础语法错误 - 保存前:用 Build System 快速跑一次
homeassistant --check-config或kubectl apply --dry-run=client - 提交前:Git hook 调用
yamllint --strict强制阻断
最容易被忽略的是:yamllint 默认不校验锚点(&anchor / *anchor)引用是否有效,也不校验 !include 类扩展语法——这些全靠你人工核对或引入 YAML language server(但 Sublime 目前无成熟集成)。

















