У меня была ситуация, когда я хотел заменить FOO на BAR через файл; однако, я хочу делать это только в определенных местах, например между строками 68-104, 500-537 и 1044-1195. На практике я уронил маркеры (MA, MB, MC, ...) на линиях, представляющих интерес, и я побежал следующее:Поиск и замена Vim - ограничить определенные строки
:'a,'b s/FOO/BAR/g | 'c,'d s/FOO/BAR/g | 'e,'f s/FOO/BAR/g
мне пришлось повторить это десятки раз с различными поиска и замены терминов S/CAT/DOG и т. Д., Что стало больно, чтобы каждый раз переписывать командную строку. Мне повезло, что у меня было всего 3 места, которые я хотел ограничить своим поиском (представьте, было ли 30 или 40, как бесполезно получить командную строку).
Закодируйте функцию, есть ли какой-нибудь более простой способ сделать это?
Относительно примечания. Я скопировал FOO к «с» (поиск) регистрации и BAR к «г» (заменить) и попробовал командную строку
:'a,'b s/\[email protected]/\[email protected]/ | 'c,'d s/\[email protected]/\[email protected]/ | 'e,'f s/\[email protected]/\[email protected]/
Это спасло бы меня того, чтобы повторно написать в командной строке каждый времени, но, увы, это не сработало. Бит замены был штраф \ = @ r, но the \ = @ s в шаблоне поиска дал ошибку.
Любые советы будут оценены.
Вы можете также использовать CONTROL-P и CONTROL -N (я думаю), чтобы перебирать предыдущие команды. Это должно устранить необходимость повторного ввода команд. – jahroy
обычно принимает ответ, если это было полезно. – epsilonhalbe