【发布时间】:2016-07-12 13:17:36
【问题描述】:
我正在尝试学习如何在 vim 中使用正则表达式,并且我目前正在尝试进行搜索和替换。我有这样的事情:
aaaaaaa&sometext&...
aaaaaaaanothertext
(as 实际上是行首的空格,我不知道如何在这里打印)
我想用& & 替换第一次出现的&,并保持其他所有内容不变。正如here 所建议的那样,我将\%(...\) 用于非捕获模式,但a 模式仍被捕获。我正在使用:%s/\%(^a*\)&/& &/gc,我得到:
aaaaaaaa& aaaaaaaa&sometext&...
aaaaaaaaanothertext
我不明白为什么。我也尝试过用组替换,如:%s/\%(^a*\)\(&\)/\1 \1/gc,但后来我得到:
& &sometext&...
aaaaaaaanothertext
因此,似乎该组确实被组处理忽略了(因为第一个组在搜索模式上是 &),但仍被搜索模式捕获。
所以,长话短说,我必须使用哪个替换命令才能从:
aaaaaaa&sometext&...
到:
aaaaaaa& &sometext&...
?
【问题讨论】: