我正在尝试学习如何使用vim的正则表达式,我正在尝试进行搜索和替换.我有这样的事情:
aaaaaaa&sometext&...
aaaaaaaanothertext
Run Code Online (Sandbox Code Playgroud)
(a
s实际上是行开头的空格,我不知道如何在这里打印)
我想替换第一次出现的&
有& &
,并保持everyting其他不变.我正在使用\%(...\)
非捕获模式,如此处所示,但a
模式仍然被捕获.我正在使用:%s/\%(^a*\)&/& &/gc
,我得到:
aaaaaaaa& aaaaaaaa&sometext&...
aaaaaaaaanothertext
Run Code Online (Sandbox Code Playgroud)
我不明白为什么.我也尝试过用组替换:%s/\%(^a*\)\(&\)/\1 \1/gc
,但是后来我得到了:
& &sometext&...
aaaaaaaanothertext
Run Code Online (Sandbox Code Playgroud)
因此,似乎该组实际上被忽略了组处理(因为第一组是在搜索模式上&
),但仍然在搜索模式上捕获.
所以,长话短说,取代命令我必须使用来自:
aaaaaaa&sometext&...
Run Code Online (Sandbox Code Playgroud)
至:
aaaaaaa& &sometext&...
Run Code Online (Sandbox Code Playgroud)
?