在行中替换最后一次出现

时间:2012-08-08 13:42:52

标签: vim

:%s/one/two/会将one第一次替换为two。是否有一种简单的方法来替换 last 事件?

我不能认为它是在行尾的旁边,并且在最后一次出现“抢”使用时没有任何独特之处,类似于:

one two three one two three one two one two one two ...

3 个答案:

答案 0 :(得分:41)

最简单的方法是在匹配前允许任意文字,并使用\zs指定匹配的区域:

:%s/.*\zsone/two/

答案 1 :(得分:12)

因为。*贪婪,这应该有效:

:%s/\(.*\)one/\1two/

答案 2 :(得分:3)

如果你想在一行中替换一个单词,你也可以说:

$?one<CR>cetwo<ESC>

这将转到该行的末尾($)并向后找到单词one?one<CR>)。然后它将更改c)所有内容直到字词e end two)。当然,您可以使用eEf等来改变F。你甚至可以说c17l来改变接下来的17个字符。