重複の可能性:
Vim:sは、1行の最初のN < gエントリを置き換えます。
n
viで "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/gc
、y
n回クリックしてからq
、、m回などをクリックすることです。何度も必要な場合は、許可されている回答に記載されているとを使用してください。:%s/hello/second/gc
y
q
feedkeys
repeat
答え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