:%s/one/two/
将替换第一次出现的one
with two
。有没有一种简单的方法可以代替最后一次出现?
我不能假设它在行尾旁边,并且在最后一次出现“抓取”时没有什么独特之处,类似于:
one two three one two three one two one two one two ...
:%s/one/two/
将替换第一次出现的one
with 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 个字符。e
two
e
E
f
F
c17l