Подтвердить что ты не робот

Vim поиск и замена с использованием текущей строки в качестве контрольной точки

Есть ли способ указать диапазон поиска и замены, используя текущую строку в качестве ссылки? Я могу указать диапазон, используя явные строки, такие как

:5,15s/foo/bar/g

выполнить поиск и заменить только строки с 5 по 15. Как указать диапазон, например "от текущей строки до 10 строк ниже (или выше) текущей строки"?

4b9b3361

Ответ 1

Вы можете использовать . для текущей позиции и .+10 для 10 строк вниз:

:.,.+10s/foo/bar/g

Некоторые другие полезные диапазоны:

  • % для всего файла.
  • '<,'> для линий визуально выбранного блока. Это может привести к большему, чем вы хотите, чтобы визуальный выбор начинался или заканчивался посередине линии. Вся строка включена.
  • 'a,'b от метки a до метки b.
  • .,$ от текущей строки до конца файла.

Ответ 2

:help :range дает вам все подробности; вы можете делать довольно сложные вещи, например. :'a;/pat1/-1.

Для диапазонов, начинающихся с текущей строки, аккуратным трюком является запуск режима командной строки путем префикса : со счетчиком: например. 5: превращается в :.,.+4.

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