viで次のnワードを検索して置換する

viで次のnワードを検索して置換する

重複の可能性:
Vim:sは、1行の最初のN < gエントリを置き換えます。

nviで "hello"という単語の最初の項目を検索して置換し、次のm項目はにbonjour、残りはすべてに置き換えるにはどうすればよいですかnamaste

答え1

n番目の「hello」を手動で見つけることができますか?その場合は、次のようにn番目のhelloを探します。

:1 (goes to the first line of your file)
n/hello (find the nth hello, where n is the number)

次に、すべてのhellosを次のように置き換えます。

:1,.s/hello/bonjour/g
(move to the next line)
:.,$s/hello/namaste/g

答え2

これは基本的に私の質問と同じように結び付けられています(説明にリンクされています。言及したように、私の質問は1行を必要としますが、一般的に多くを一般化します)。最も簡単な答えは:%s/hello/first/gcyn回クリックしてからq、、m回などをクリックすることです。何度も必要な場合は、許可されている回答に記載されているとを使用してください。:%s/hello/second/gcyqfeedkeysrepeat

答え3

fun! FUN(n, m)
    if !exists('g:count')
        let g:count = 0
    endif

    let g:count+=1

    if g:count<=a:n
        return 'hello'
    elseif g:count<=a:n+a:m
        return 'bonjour'
    else
        return 'namaste'
    endif
endfun

:unlet! g:count
:%s/word/\=FUN(2, 3)/g

今後

word
word
word
word
word
word
word

後ろに

hello
hello
bonjour
bonjour
bonjour
namaste
namaste

関連情報