:%s/one/two/
の最初の出現をone
に置き換えtwo
ます。代わりに、最後の出現を置き換える簡単な方法はありますか?
私はそれが行末の隣にあると仮定することはできず、次のように「つかむ」ために使用する最後の出現の周りに一意のものは何もありません:
one two three one two three one two one two one two ...
:%s/one/two/
の最初の出現をone
に置き換えtwo
ます。代わりに、最後の出現を置き換える簡単な方法はありますか?
私はそれが行末の隣にあると仮定することはできず、次のように「つかむ」ために使用する最後の出現の周りに一意のものは何もありません:
one two three one two three one two one two one two ...
最も簡単な方法は、一致の前に任意のテキストを許可し、次を使用して一致した領域を指定すること\zs
です。
:%s/.*\zsone/two/
.* は貪欲であるため、これは機能するはずです。
:%s/\(.*\)one/\1two/
1行の単語を置き換えたい場合は、次のように言うこともできます。
$?one<CR>cetwo<ESC>
これは行の終わり($
)に移動し、単語one
(?one<CR>
)を逆方向に検索します。次に、文字列を含む単語の末尾( )までのすべてを( )変更します。もちろん、、、などで変更できます。次の17文字を変更すると言うこともできます。c
e
two
e
E
f
F
c17l