Ответ 1
:help search-range
а затем
:help /\%>l
так существенно:
/\%>12l\%<24lsearch
Я знаю, что с помощью команды подстановки Vim можно задать диапазон строк:
:12,24s/search/replace
Я хочу также указать диапазон с обычным поиском. Что-то вроде
:12,24/search
Так как это не работает (по крайней мере, на моей конфигурации Vim), кто-нибудь знает, как это сделать?
Спасибо.
:help search-range
а затем
:help /\%>l
так существенно:
/\%>12l\%<24lsearch
Отличный ответ от акиры. Но после некоторого рытья я нашел альтернативу. Это не так элегантно, но легче набирать:
:12,24g/search/
Это даст вам одно раздражающее приглашение, но оно окажется в первой строке диапазона, содержащей искомую строку.
Вам действительно нужны номера строк? Другой способ может заключаться в визуальном выборе диапазона.
/\%Vwhat_to_search
для поиска 'what_to_search' в ранее выбранном диапазоне.Это меньше, чем печатать, но не напрямую, что вы просили; -)
Смотрите: help% V
[EDIT] Отлично, я только что узнал, что диапазон поиска можно изменить после выполнения поиска, выбрав другой диапазон, отменив выбор этого диапазона, нажав ESC и нажав n, чтобы повторить поиск. Вим действительно всегда хорош для приятных сюрпризов.
Продолжайте использовать команду подстановки, но добавьте флаги gc
в исходный пример.
:12,24s/search//gc
От :help search-range
[Для поиска в пределах диапазона] используйте ": заменить" командой "c" флаг.
Пример:
:.,300s/Pattern//gc
Эта команда будет выполнять поиск из позиции курсора до строки 300 для "Шаблон". В матче вы можете ввести 'q', чтобы остановить, или 'n', чтобы найти следующий матч.
Если метки обозначают a и b, поиск может быть ограничен областью между a и b, используя
/\%>'a\%<'bSearchText
Это можно упростить с помощью cmap
cmap vmsab /\%>'a\%<'b
cmap vmscd /\%>'c\%<'d