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