Vim поиск и замена с использованием текущей строки в качестве контрольной точки
Есть ли способ указать диапазон поиска и замены, используя текущую строку в качестве ссылки?
Я могу указать диапазон, используя явные строки, такие как
:5,15s/foo/bar/g
выполнить поиск и заменить только строки с 5 по 15. Как указать диапазон, например "от текущей строки до 10 строк ниже (или выше) текущей строки"?
Ответы
Ответ 1
Вы можете использовать .
для текущей позиции и .+10
для 10 строк вниз:
:.,.+10s/foo/bar/g
Некоторые другие полезные диапазоны:
-
%
для всего файла.
-
'<,'>
для линий визуально выбранного блока. Это может привести к большему, чем вы хотите, чтобы визуальный выбор начинался или заканчивался посередине линии. Вся строка включена.
-
'a,'b
от метки a до метки b.
-
.,$
от текущей строки до конца файла.
Ответ 2
:help :range
дает вам все подробности; вы можете делать довольно сложные вещи, например. :'a;/pat1/-1
.
Для диапазонов, начинающихся с текущей строки, аккуратным трюком является запуск режима командной строки путем префикса :
со счетчиком: например. 5:
превращается в :.,.+4
.
Protip: узнайте, как искать команды и перемещаться по встроенному :help
; он является всеобъемлющим и предлагает множество советов. Вы не будете изучать Vim так же быстро, как другие редакторы, но если вы посвятите себя непрерывному обучению, он окажется очень мощным и эффективным редактором.