Учитывая более широкий контекст проблемы, которую вы задали в своем дополнительном
Комментарий, я бы предложил следующее решение. Групповые зависимые строки
код в сгибах по отступам, синтаксису языка или маркерам. Любой из этих
Три метода автоматические и не требуют ручного создания складок. Который
Выбор зависит от того, какой язык вы используете. Смотри :help foldmethod
или спроси
Я в комментариях, если вам нужна помощь со складыванием.
Если синтаксис языка, который вы используете, не имеет широкой поддержки в Vim, наиболее
удобные методы будут использовать маркеры сгиба или определение выражения для
рассчитать уровень сгиба каждой линии. Первый метод подразумевает окружение
каждую группу строк сворачивать с помощью специальных текстовых маркеров (которые могут быть заключены в
в комментарии не нарушать синтаксические правила языка). По умолчанию те
маркерами являются {{{
и }}}
; см :help fold-marker
и :help foldmarker
до
узнай как их поменять. Используйте
:set foldmethod=marker
, чтобы включить этот режим свертывания.
Определение выражения для расчета уровня сгиба для каждой строки еще более
гибкий метод. Это позволяет использовать любую логику (которая может быть выражена в Vim
сценарий), чтобы определить уровень сгиба. Например, чтобы сложить группы линий, которые
начинается с одного пробела
:set foldmethod=expr
:set foldexpr=getline(v:lnum)[0]=='\ '
См. :help fold-expr
для получения дополнительной информации о настройке выражения сгиба.
Когда линии, которые зависят друг от друга, сгруппированы в сгибы, вы можете легко
передать сгиб в программу фильтра. Переместить курсор на линию внутри цели
сверните, затем введите [zV]z!
(чтобы выбрать весь сгиб) и введите команду для
запустить. Для сохранения набора вы можете определить отображение
:nnoremap <leader>z [zV]z!
или, если команда всегда одна и та же,
:nnoremap <leader>z [zV]z!cat -n<cr>
(замените cat -n
- мой пример команды - на пользовательскую).