Vim: Повторить последнюю замену
Разработка эффективных рабочих процессов в Vim — это повторение, в первую очередь с использованием .
для повторения последней команды. Но Vim также может повторить последнюю замену. Вот несколько вариантов с небольшими отличиями:
:&
— Повторяет последнюю замену, но сбрасывает флаги. Также работает только с:s
.:&&
— Повторяет последнюю замену с теми же флагами.:%&
— Повторяет последнюю замену для всего файла, сбрасывает флаги.:%&&
— Повторяет последнюю замену для всего файла, сохраняет флаги.
А вот бонусный совет, который работает в Нормальном режиме, так что вам придётся ещё меньше печатать:
&
— В Нормальном режиме повторяет последнюю замену, но сбрасывает флаги.
Зачем может понадобиться сбросить флаги при повторном запуске замены? В конце концов, самый распространённый флаг — это /g
, который необходим для одновременного изменения всех совпадений в строке за раз.
Вот веская причина: Возможно вы читали предыдущий совет Vim: Подсчёт вхождений о подсчёте вхождений без изменений. Мы можем объединить эти два совета вместе, чтобы сначала подсчитать количество вхождений шаблона, а затем заменить их:
:%s/something/newthing/gn
:%&g
Ниже в скринкасте демонстрируется этот процесс. Во-первых, мы выполняем замену, но без замены, а только с подсчётом количества вхождений. Затем повторяем со сбросом флагов и собственно делаем замену. Далее мы переходим к другому файлу и повторяем замену с теми же флагами :%&&
.