Search code examples
vimvi

VIM: Finding and replacing first N occurrences of a word


I am editing a file and i want to change only a specific word with another word, but only for first N occurrences. I tried multiple commands

N :s/word/newword/

:%s/word/newword/count

And other commands that i could find on google. But none of them works.

EDIT:: Vim commands is preferred. But Vim script can also be used. I don't have any prior experience in vim scripting.


Solution

  • Using a disposable recording allows you to control exactly how many changes you do:

    qq             " start recording in register q
    /foo<CR>       " search for next foo
    cgnbar<Esc>    " change it to bar
    q              " end recording
    11@q           " play recording 11 times
    

    See :help recording and :help gn.

    Another way, using :normal:

    :norm! /foo<C-v><CR>cgnbar<C-v><Esc>     <-- should look like this: :norm! /foo^Mcgnbar^[
    11@:
    

    See :help :normal and :help @:.

    Or simply:

    :/foo/|s//bar<CR>
    11@: