Как скрыть пустые строки?

Раньше я работал со списком расположений (: lvimgrep), чтобы показать содержимое буфера, но недавно я обнаружил сворачивание как интересную альтернативу. Я использую параметры foldmethod=expr и foldexpr=getline(v:lnum)=~'.'?1:0 . Все непустые строки (или абзац) складываются и разделяются пустыми строками. Здесь вы можете увидеть исходный файл и сложить . Преимущество этого по сравнению со списком местоположений состоит в том, что он показывает количество строк, и нет необходимости в дополнительном буфере. Однако для удобства чтения было бы лучше убрать пустые строки между сгибами, и я не знаю, как это сделать. Это возможно при ручном сворачивании, но если мы включим пустые строки в foldexpr , vim объединит все эти абзацы в один раз. Как их разделить? Вот как это должно выглядеть.

Всего 1 ответ


Вы можете сделать пустые строки частью предыдущего абзаца следующим образом:

:set foldexpr=strlen(getline(v:lnum))==0?'=':strlen(getline(v:lnum-1))?1:'>1'

Если текущая строка пуста, используйте уровень сгиба из предыдущей строки ( = ).

В противном случае проверьте предыдущую строку: если она пуста, это должно быть начало нового абзаца. Создайте новый сгиб 1 уровня с >1 . В противном случае это должно быть частью существующего абзаца; назначьте ему фолд уровень 1 .


Есть идеи?

10000