我想在vim编辑器中做这样的事情:
:%s / SETR P:LL ../ SETR P:LH ../ g
我的文件中有多行以SETR P:
开头,我想用L
替换第二个H
,而该行中剩余的两个字母将与它就在以前。
说它是否早于SETR P:LLHC
更换后,它将是SETR P:LHHC
我可以使用vim编辑器在一条指令中完成吗?
答案 0 :(得分:2)
通常使用捕获组来完成。通过\(...\)
捕获要在替换中重新包含的源模式部分。然后,在替换中,您可以通过\1
引用该部分(并通过\2
跟随,等等):
:%s/SETR P:LL\(..\)/SETR P:LH\1/g
这在:help /\(
下记录。
此处的替代方法是使用LL
(匹配结束)在\ze
之后结束匹配。模式的其余部分(..
)仍然被检查,但它不是匹配的一部分。
:%s/SETR P:LL\ze../SETR P:LH/g
顺便说一下,你的模式也会愉快地匹配更长的目标,例如: SETR P:LLHHHHHHHH
。如果您需要将扩展名限制为两个字母,请使用..\>
(关键字边界)或..\A\@=
(非字母前瞻)。
答案 1 :(得分:1)