Vim: скрыть весь код вокруг выбранного кода

Я хочу иметь возможность скрыть весь код вокруг определенного участка кода, с которым я работаю. Теперь мне интересно, возможно ли это как-то в Vim. Я уже немного поэкспериментировал с ним и успешно скрыл линии выше и ниже моего выделения с помощью группы выделения Igore. Это позволяет мне видеть только те строки, на которых я хочу сосредоточиться, но проблема возникает, когда я начинаю редактировать код и добавлять или удалять строки. Когда я добавляю или удаляю строку, уже установленная группа выделения «Игнорировать» по-прежнему поддерживает установленные номера строк, поэтому я либо вижу часть скрытого кода, либо часть кода, который я хочу видеть, становится длинным и распространяется в скрытый номера строк. Поэтому мне интересно, есть ли способ исправить этот или любой другой способ выполнить то, что я хочу в Vim?

Оцените любые предложения!


person user4189799    schedule 28.10.2014    source источник
comment
Вы пробовали фолдить?   -  person DevSolar    schedule 28.10.2014
comment
:h fold-manual прочитайте это.   -  person Kent    schedule 28.10.2014
comment
возможный дубликат Vim: временно показывать только определенные строки   -  person glts    schedule 28.10.2014


Ответы (2)


Скрытие или затенение частей буфера — это не способ Vim. Складывание – это встроенная функция, которая подходит ближе всего. С помощью :set foldmethod=manual вы можете использовать zf или :fold, чтобы скрыть части сверху и снизу.

Чтобы узнать о плагине, посмотрите NrrwRgn — плагин для узких областей. . Он позволяет редактировать части буфера в отдельном рабочем буфере с автоматической обратной синхронизацией.

person Ingo Karkat    schedule 28.10.2014
comment
Плагин NrrwRgn кажется довольно близким IMO - person mish; 28.10.2014
comment
Ух ты! этот плагин звучит так, как будто он может помочь мне. Большое спасибо! - person user4189799; 28.10.2014

Чтобы скрыть диапазон строк (скажем, от 1 до 10 и от 20 до конца, вы можете ввести :1,10fo|20,$fo

Оттуда вы можете создать функцию на основе текущей позиции курсора -10/+10

Обратите внимание, что вам нужно сначала выполнить :set foldmethod=manual, чтобы это заработало.

EDIT: простое решение: :1,.-10fo|.+10,$fo

person Asenar    schedule 28.10.2014