:%s/one/two/将替换第一次出现的onewith two。有没有一种简单的方法可以代替最后一次出现?
我不能假设它在行尾旁边,并且在最后一次出现“抓取”时没有什么独特之处,类似于:
one two three one two three one two one two one two ...
:%s/one/two/将替换第一次出现的onewith two。有没有一种简单的方法可以代替最后一次出现?
我不能假设它在行尾旁边,并且在最后一次出现“抓取”时没有什么独特之处,类似于:
one two three one two three one two one two one two ...
最简单的方法是在匹配前允许任意文本,并使用以下命令指定匹配区域\zs:
:%s/.*\zsone/two/
因为 .* 是贪婪的,所以这应该有效:
:%s/\(.*\)one/\1two/
如果你想替换一行中的一个单词,你也可以说:
$?one<CR>cetwo<ESC>
它将转到行尾 ( $) 并向后找到单词one( ?one<CR>)。然后它将更改( c) 所有内容,直到带有字符串的单词的结尾( ) 。当然,您可以使用、等来改变。您甚至可以说更改接下来的 17 个字符。etwoeEfFc17l