如果我在YAML中每个缩进级别使用一个空格、两个空格或四个空格,有什么区别吗?
每个结构类型的空格编号是否有任何特定规则??
例如4空间用于嵌套Map,1空间每个列表项等??
我正在为elasticbeanstalk.ebextensions编写一个yaml配置文件,我真的很难正确地构造它。虽然我在YAML Validator中有有效的yaml,但弹性豆茎似乎理解了不同的结构。
如果我在YAML中每个缩进级别使用一个空格、两个空格或四个空格,有什么区别吗?
每个结构类型的空格编号是否有任何特定规则??
例如4空间用于嵌套Map,1空间每个列表项等??
我正在为elasticbeanstalk.ebextensions编写一个yaml配置文件,我真的很难正确地构造它。虽然我在YAML Validator中有有效的yaml,但弹性豆茎似乎理解了不同的结构。
3条答案
按热度按时间hmae6n7t1#
YAML中没有要求缩进任何具体数量的空格。也不要求一致。例如,这是有效的YAML:
字符串
一些规则可能会令人感兴趣:
{
或[
开头的所有内容)可以跨越多行,但必须缩进至少与周围当前块级别一样多的空格。-
被认为是缩进的一部分:型
如果你使用的是linter,那可能需要定义一定数量的空格,但是YAML规范本身和符合YAML规范的实现并不需要。
ngynwnxp2#
V1.2的YAML规范只是说
在YAML块样式中,结构由缩进确定。一般来说,缩进定义为在一行的开始处有零个或多个空格字符。
为了保持可移植性,不能在缩进中使用制表符,因为不同的系统对制表符的处理是不同的。请注意,大多数现代编辑器都可以配置为按Tab键插入适当数量的空格。
缩进量是表示细节,不得用于传达内容信息。
因此,只要使用空格而不是制表符,您就可以根据自己的喜好设置缩进深度。有趣的是,IntelliJ默认使用2个空格。
rxztt3cl3#
复制自https://docs.saltproject.io/en/3000/topics/troubleshooting/yaml_idiosyncrasies.html(https://archive.is/ZnwMb)
缩进
YAML文件的建议语法是使用2个空格进行缩进,但YAML将遵循单个文件使用的任何缩进系统。缩进两个空格对于SLS文件非常有效,因为数据是统一的,没有深度嵌套。
嵌套词典
当字典嵌套在其他数据结构(特别是列表)中时,缩进逻辑有时会发生变化。可能发生这种情况的示例包括文件.managed state中的上下文和默认选项:
字符串
请注意,虽然缩进是每级两个空格,但对于context和defaults选项下的值,缩进是四个空格。如果只有两个空格用于缩进,那么这些键将被视为包含上下文键的同一字典的一部分,因此数据将无法正确加载。如果不希望使用双缩进,那么可以使用花括号声明深度嵌套的dict:
型