0
1 aaa bbb aaa
2 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
3 aaa xx aaa

如何将每行的第二个aaa 替换为 yyy

1 aaa bbb yyy
2 aaa ccccccccc 年年
3 aaa xx yyy
4

2 回答 2

2

发出以下命令将解决您的问题。

  :%s/\(aaa.\{-}\)aaa/\1yyy/g
于 2013-08-30T09:14:50.050 回答
1

另一种方法是使用\zsand \ze,它标记模式中匹配的开始和结束。所以你可以这样做:

:%s/aaa.*\zsaaa\ze/yyy

换句话说,找到“aaa”,然后是任何内容,然后是另一个“aaa”,并将其替换为“yyy”。

但是,如果一行中有三个“aaa”,这将不起作用,您应该使用\{-}而不是*. (见:h non-greedy

于 2013-08-30T09:07:03.453 回答