Как я могу свернуть объекты YAML в VIM?

Я имею файл форматированного текста YAML и хотел бы определить пользовательское сворачивание для VIM, но я не уверен, как пойти об этом (несмотря на чтение документации VIM для сворачивания). Файл состоит из "документов" YAML, как так:

---
title: My Title
attr1: value1
attr2: value2
---
title: Next Item
attr1: value3
---
title: One More Item
...

Я хотел бы, чтобы получающийся свернутый текст выглядел примерно так:

+---- 2 lines: My Title ----
+---- ? lines: Next Item ---

Любые предложения ценятся!Спасибо!

12
задан wkranec 9 July 2010 в 13:45
поделиться

2 ответа

Do

%s/---\(.*\)\(\_.\{-}title: \)\(.*\)/---\1 #{{{1 \3\2\3/g
set foldmethod=marker

or

%s/\(---\_.\{-}title: \)\(.*\)/#{{{1 \2\r\1\2/g
set foldmethod=marker

Это добавит комментарий с заголовком в начало каждого документа YAML и оставит документ действительным. Опция foldmarker должна быть оставлена нетронутой.

Результат:

1.

--- #{{{1 My Title
title: My Title
attr1: value1
attr2: value2
--- #{{{1 Next Item
title: Next Item
attr1: value3
--- #{{{1 One More Item
title: One More Item
...

Сложено:

+--  4 строк: --- My Title-----------------------------
+--  3 строк: --- Next Item----------------------------
+--  3 строк: --- One More Item------------------------

2.

#{{{1 My Title
---
title: My Title
attr1: value1
attr2: value2
#{{{1 Next Item
---
title: Next Item
attr1: value3
#{{{1 One More Item
---
title: One More Item
...

Folded:

+--  5 строк: My Title--------------------------------
+--  4 строк: Next Item-------------------------------
+--  4 строк: One More Item---------------------------
5
ответ дан 2 December 2019 в 22:37
поделиться

Если вы хотите постоянно использовать метод сворачивания, отличный от «ручного», добавьте эту строку в свой ~ / .vimrc:
set foldmethod = foldoption

Я бы рекомендовал использовать foldmethod = indent. Это будет складываться на основе любого отступа. Затем, если вы измените свой ввод, чтобы включить отступы, где вы хотите, чтобы произошли складки. Например, если вы измените свой ввод на

---
title: My Title
    other attrs: other values
---
title: Next Item
---
title: One More Item
...

, он будет свернут, как вы описали

3
ответ дан 2 December 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: