Установить уровень сгиба в части файла в vim

Параметр foldlevelкогда сгибание активно, отображаются все сгибы до этого уровня и закрываются остальные. * Я хотел бы сделать что-то подобное только для части файла, возможно, для всего материала ниже текущего сгиба или для всего материала в диапазоне.

Рассмотрим этот файл:

      Tippy Top
    chapter
        section
            subsection
    chapter 2
        section 2.1
            sub 2.1.1

где ведущее пустое пространство - это вкладки и :setlocal foldmethod=indentдействует.

я хотел бы пойти в Tippy Topи сделать что-то вроде :expandToLevel 1и см. только заголовки 2 глав.

я могу использовать zCзакрыть все, но zoпросто восстанавливает предыдущее представление с заголовками более низкого уровня, такими как subsectionрасширены, если они были расширены ранее.

я пытался использовать :foldclose, подсчет повторений, выделение визуальной области, za, foldnestmax, но ни один из них не достигает желаемого поведения.

Пока что, чтобы получить расширение только до определенного уровня, я использую один из двух способов:

  1. Использовать :set foldlevelчтобы получить то, что я хочу в моей текущей области, тем самым удалив все пользовательские складки, которые я сделал в другом месте.
  2. Вручную закройте складки, которые я хочу закрыть, например, zcна и .

Первый теряет то, что я сделал в остальной части документа, а второй медленный и утомительный, когда записей больше, чем несколько.

я замечаю, что Cфункция foldUpdateIEMS() и связанные с ней функции занимают ряд строк. Я не уверен, что делает эта функция, но похоже, что что-то подобное недоступно сценариям vim.

Обновление от 25 апреля: запуск vim в отладчике и установка точки останова foldUpdateIEMS(). Он срабатывал при загрузке файла, но не когда я :set foldlevel=2. Таким образом, он не принимает непосредственного участия в открытии и закрытии складок. Кажется, он определяет складки.

Мой интерес к этим функциям исходит из vimoutliner, который использует foldmethod=expr. Но я упростил его до простого текстового файла с отступом табуляции, чтобы сосредоточиться на основных вопросах.

* В качестве побочного вопроса, когда я устанавливаю foldlevel=1с тестовым файлом выше я вижу только chapter, нет chapter 2. Я не знаю почему.

0 ответов

Другие вопросы по тегам