:%s/one/two/
将two
取代one
的第一发生。有没有一种简单的方法来代替最后发生呢?替换最后一次出现在一行
我不能假设它的旁边结束行,并没有什么围绕最后出现的独特的“抢”来使用,与此类似:
one two three one two three one two one two one two ...
:%s/one/two/
将two
取代one
的第一发生。有没有一种简单的方法来代替最后发生呢?替换最后一次出现在一行
我不能假设它的旁边结束行,并没有什么围绕最后出现的独特的“抢”来使用,与此类似:
one two three one two three one two one two one two ...
最简单的方法是,允许在比赛的前任意文本,并指定使用\zs
匹配的区域:
:%s/.*\zsone/two/
因为*是贪婪,这应该工作:
:%s/\(.*\)one/\1two/
漂亮整洁:) – Amir 2017-03-15 19:46:01
有时贪婪可以被利用。 – 2018-02-17 00:25:25
如果你想在一行替换词,你还可以说:
$?one<CR>cetwo<ESC>
哪会去行($
)的结束和找到向后字one
(?one<CR>
)。然后,它会变化(c
)一切都交给这个词的年底(e
)以字符串two
。当然你也可以用E
,f
,F
等变化e
。你甚至可以说c17l
改变接下来的17个字符。
我喜欢这个解决方案的简单性。我一直在敲打我的脑袋试图使用负前瞻在vim最后两个小时,但这个工作马上!谢谢!! – flangofas 2014-07-30 13:07:29