Как автоматически сложить файл, если начальный и конечный маркеры совпадают?

Как автоматически сложить файл, если начальный и конечный маркеры совпадают?

У меня есть простой текстовый файл, который использует -- >8 --разделители разделов, например:

-- >8 --

first section
some content
more content

-- >8 --

second section
some content
more content

-- >8 --

Чтобы было легче ориентироваться в файле, я хочу сложить разделы между маркерами. Я ожидал, что это будет так же просто, как:

set foldmethod=marker
set foldmarker=--\ >8\ --,--\ >8\ --

Но это приводит к образованию вложенных складок.

Я обнаружил, что могу использовать fold-expression для достижения этого (см. ответ ниже), но это кажется довольно излишним. Есть ли более простой способ сделать это?

решение1

Я обнаружил, что для этого можно использовать выражение свёртки:

set foldmethod=expr
set foldexpr=(getline(v:lnum)=='--\ >8\ --')?1:2

Скриншот:

- -- >8 --
|++---  5 lines: first section------------------------------------------------
| -- >8 --
|++---  5 lines: second section-----------------------------------------------
| -- >8 --

Связанный контент