SublimeLinter + yamllint 组合才是真校验,需同时安装 SublimeLinter(主框架)、SublimeLinter-contrib-yamllint(YAML 适配器)和系统级 yamllint CLI(pip install yamllint),缺一不可;文件后缀非标准需手动绑定语法,项目根目录必须存在 .yamllint 文件启用关键规则,且需显式配置 executable 路径防 PATH 失效。

SublimeLinter + yamllint 组合才是真校验
只装 SublimeLinter 框架或只装 YAML 插件,文件保存时永远显示 “0 errors, 0 warnings”——那不是没错误,是根本没跑检查。真正起作用的是三者联动:SublimeLinter(主框架)、SublimeLinter-contrib-yamllint(YAML 专用适配器)、系统级 yamllint CLI(实际执行校验)。缺任一环,右下角不会出现黄色警告图标,也不会在行号旁标出 error: wrong indentation 这类提示。
- 先在终端执行
pip install yamllint,确保命令全局可用(yamllint --version能返回版本号) - 用 Package Control 安装
SublimeLinter-contrib-yamllint(注意名字,不是YAML Lint或SublimeLinter-yamllint) - 打开
Preferences → Package Settings → SublimeLinter → Settings,确认"paths"字段为空(自动探测),或显式填入yamllint绝对路径(如 macOS 上"executable": "/usr/local/bin/yamllint")
文件后缀不标准?手动绑定语法是刚需
Sublime 不会根据 apiVersion: 或 on: 自动识别 YAML,它只看后缀。像 .actrc、docker-compose.prod.yml、configuration.yaml 这类文件,默认仍是 Plain Text 或错误语法,高亮和校验全失效。
- 打开该文件 → 点击右下角当前语言名(如
Plain Text)→Open all with current extension as…→ 选YAML - 若仍无效,需编辑
Packages/YAML/YAML.sublime-syntax:在file_extensions列表末尾加一行- actrc(注意缩进对齐,必须是两个空格) - 改完保存,再运行
Ctrl+Shift+P→ 输入Reload Syntax Definitions生效
为什么 yamllint 报错但 kubectl 能跑通?
yamllint 只管 YAML 规范,不管业务逻辑。它能发现 replicas: "3"(字符串)和 replicas: 3(整数)的类型差异(如果启用了 truthy 规则),但不会告诉你 service: non_existent 是否真实存在,也不会校验 entity_id: light.kitchen 在 Home Assistant 中是否存在。
- 语义级校验必须靠上层工具:
homeassistant --check-config、kubectl apply --dry-run=client -f file.yaml、act -b - 这些工具需单独配置为 Sublime 的
Build System,不能指望yamllint替代 - 项目根目录必须有
.yamllint文件,否则默认规则极弱(不检查重复 key、布尔值拼写等关键项)
常见静默失效点:PATH 和 .yamllint 文件位置
插件都装了,但保存后毫无反应——大概率卡在这两个地方。Sublime 启动时 PATH 和 shell 不一致,且 .yamllint 放错位置会导致规则完全不加载。
- PATH 问题:Sublime 常找不到
yamllint,在 SublimeLinter 设置中显式指定"executable"路径(Windows 用户注意路径用反斜杠,如"C:\Python39\Scripts\yamllint.exe") -
.yamllint必须放在项目根目录(即你打开的文件所在文件夹),而不是用户 home 目录或插件目录;内容至少包含rules: {key-duplicates: true, truthy: true}才能触发关键检查 - 验证是否生效:新建一个明显缩进错误的
test.yaml,保存后看右下角是否出现黄色警告图标和数字
真正容易被忽略的是 .yamllint 文件的位置和内容,以及 Sublime 启动时继承的 PATH 环境变量——这两处出错,整个校验链就断在第一环,连错误提示都不会出来。


















