YAML中单行Jinja赋值触发Plain value cannot start with %报错原因咨询
报错触发原因
- 该报错由VSCode默认搭载的YAML语法校验插件(通常为Red Hat YAML插件)抛出,并非Jinja语法本身存在问题,不会影响Jinja的实际解析与执行。
- 根据YAML官方语法规则,未用引号、块标记包裹的纯文本值(Plain scalar)不允许以
%开头:%是YAML预留的指令指示符,仅可用于%YAML 1.2这类YAML全局指令的开头位置。 - 单行赋值场景下,整行
{%- set my_var = [1, 2, 3, 4, 5, 6, 7] %}未被任何YAML结构包裹,YAML校验器会将整行识别为纯文本值,开头的%直接命中上述语法限制,因此抛出Plain value cannot start with directive indicator character %错误。 - 多行赋值场景下,列表起始符
[后立即换行,YAML校验器会优先识别到这是YAML序列(列表)的起始标记,后续内容均被识别为列表的组成部分,不会将开头的%判定为纯文本值的首字符,因此不会触发校验报错。
常见解决方式
- 若当前文件为Jinja模板生成YAML的场景,可在VSCode中将文件关联语法修改为
Jinja或Jinja2 YAML,即可屏蔽该类误报。 - 也可在YAML插件的配置项中,添加对应文件或目录的校验排除规则。
内容的提问来源于stack exchange,提问作者Tonysres
相关产品推荐
相关产品推荐

