Хотя решение Уэйна верное, объяснение кажется немного неправильным, поэтому я добавлю мое:
В YAML -
для элементов последовательности блоков (например, ?
и :
для сопоставлений блоков) рассматривается как отступ ( spec ):
Символы «-», «?» и «:», используемые для обозначения блоказаписи в коллекции воспринимаются людьми как часть отступа.Это обрабатывается в каждом конкретном случае соответствующими производствами.
Более того, все наборы блоков (последовательности и отображения) получают отступ от своего первого элемента (поскольку нет явного начального индикатора).Таким образом, в строке - shell:
, -
определяет уровень отступа вновь начатой последовательности, в то же время, shell:
определяет уровень отступа вновь начатого отображения, который является содержимым элемента последовательности.Обратите внимание, как -
рассматривается как отступ для определения уровня отступа отображения.
Теперь вернемся к первому примеру:
windows:
- shell:
panes:
- echo hello
panes:
находится на том же уровне, что иshell:
.Это означает, что YAML анализирует его как ключ сопоставления, начатого с shell:
, что означает, что ключ shell
имеет пустое значение.Значения сопоставления неявных ключей, если они не находятся на одной строке, всегда должны иметь отступ больше соответствующего ключа сопоставления ( spec ):
Свойства узла блока могут охватывать нескольколиний.В этом случае они должны иметь отступ не менее чем на один пробел больше, чем коллекция блоков, независимо от отступа записей коллекции блоков.
OTOH, во втором примере:
windows:
- shell:
panes:
- echo hello
panes:
находится на более глубоком уровне отступа по сравнению с shell:
.Это означает, что он анализируется как значение ключа shell
и, таким образом, запускает новое отображение вложенных блоков.
Наконец, учтите, что, поскольку -
рассматривается как частьотступ, «отступ с двумя пробелами» также может означать следующее:
windows:
- shell:
panes:
- echo hello
Обратите внимание, что -
не имеют больше отступа, чем их ключи отображения.Это работает, потому что spec говорит:
Поскольку люди воспринимают индикатор «-» как отступ, вложенные последовательности блоков могут иметь отступ на одно меньше места для компенсации, за исключением, конечно,, если вложено в другую последовательность блоков (контекст блокировки против контекста блокировки).