:%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文字を変更すると言うこともできます。cetwoeEfFc17l