在行中替换最后一次出现

sim*_*ont 34 vim

:%s/one/two/将取代第一的发生onetwo.是否有一种简单的方法来替换最后一次出现?

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

one two three one two three one two one two one two ...
Run Code Online (Sandbox Code Playgroud)

Pri*_*ash 43

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

:%s/.*\zsone/two/
Run Code Online (Sandbox Code Playgroud)


per*_*eal 12

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

:%s/\(.*\)one/\1two/
Run Code Online (Sandbox Code Playgroud)

  • 有时,贪婪可能会被利用。 (2认同)