для поиска foo и заменить его на bar между строками 5 и 12. Как это сделать только в строках 5 и 12 (а не в строках между ними)?
Ответ 1
Vim имеет специальные атомы регулярного выражения, которые соответствуют определенным строкам, столбцам и т.д.; вы можете использовать их (возможно, в дополнение к диапазону), чтобы ограничить совпадения:
:5,12s/\(\%5l\|\%12l\)foo/bar/g
См. :help /\%l
Ответ 2
Вы можете сделать замену в строке 5 и повторить ее с минимальными усилиями в строке 12:
:5s/foo/bar
:12&
Как указано Ingo, :& забывает ваши флаги. Поскольку вы используете /g, правильная команда будет :&&:
:5s/foo/bar/g
:12&&
См. :help :& и друзей.
Ответ 3
Вы всегда можете добавить c в конец. Это потребует подтверждения для каждого матча.
:5,12s/foo/bar/gc
Ответ 4
Интересный вопрос. Кажется, что только выбор диапазона и выбор нескольких строк: