Это отвечает на ваш фактический вопрос, но не на ваши намерения.
Вы спрашивали о замене n-го вхождения слова (но, похоже, оно означало "в пределах строки"). Вот ответ на вопрос в том виде, в котором он был задан, на случай, если кто-то найдет его, как я =)
Для странных задач (например, необходимость замены каждого 12-го вхождения "собака" на "попугай"), я люблю использовать рекурсивные записи.
Первая пустая запись в @ q
qqq
Теперь начните новую запись в q
qq
Далее, вручную сделайте то, что вы хотите сделать (используя приведенный выше пример, замените 12-е вхождение слова "собака" на "попугай"):
/dog
nnnnnnnnnnn
удалить "собаку" и попасть во вставку
diwi
тип попугай
parrot
Теперь проиграйте свою пустую запись "@q"
@q
, который ничего не делает.
Наконец, остановите запись:
q
Теперь ваша запись в @q вызывает себя в конце. Но поскольку он называет запись по имени , он больше не будет пустым. Итак, назовите запись:
@q
Будет воспроизведена запись, затем в конце, как последний шаг, снова воспроизведется сама. Это будет повторяться до конца файла.
TLDR;
qq
q
/dog
nnnnnnnnnnndiwiparrot<esc>
@q
q
@q