如何在vim编辑器中忽略搜索和替换中的几个字符
我想在vim编辑器中执行以下操作: :%s/SETR p:LL../SETR p:LH../g 在我的文件中有多行以如何在vim编辑器中忽略搜索和替换中的几个字符,vim,replace,Vim,Replace,我想在vim编辑器中执行以下操作: :%s/SETR p:LL../SETR p:LH../g 在我的文件中有多行以SETR p:开头,我想用H替换第二行L,而该行中的其余两个字母将与以前相同 说它是否是更早的SETR p:LLHC 更换后将是SETR P:lhc 我可以用vim编辑器在一条指令中完成吗?这通常是通过捕获组完成的。通过\(…\)捕获要重新包含在替换中的源模式部分。然后,在替换中,您可以通过\1引用该零件(并通过\2,依此类推): 这在:help/\(下进行了说明 另一种方法是在
SETR p:
开头,我想用H
替换第二行L
,而该行中的其余两个字母将与以前相同
说它是否是更早的SETR p:LLHC
更换后将是
SETR P:lhc
我可以用vim编辑器在一条指令中完成吗?这通常是通过捕获组完成的。通过
\(…\)
捕获要重新包含在替换中的源模式部分。然后,在替换中,您可以通过\1
引用该零件(并通过\2
,依此类推):
这在:help/\(
下进行了说明
另一种方法是在
LL
之后使用\ze
(匹配结束)结束匹配。模式的其余部分(。
)仍处于选中状态,但它不是匹配的一部分
:%s/SETR P:LL\ze../SETR P:LH/g
顺便说一句,您的模式也可以很好地匹配较长的端点,例如,
SETR p:LLHHHHHHHH
。如果需要将扩展名限制为两个字母,请使用。\>
(关键字边界)或。\A\@=
(非字母先行).这通常通过捕获组完成。通过\(…\)
捕获要重新包含在替换中的源模式部分。然后,在替换中,您可以通过\1
引用该部分(然后通过\2
,依此类推):
这在:help/\(
下进行了说明
另一种方法是在
LL
之后使用\ze
(匹配结束)结束匹配。模式的其余部分(。
)仍处于选中状态,但它不是匹配的一部分
:%s/SETR P:LL\ze../SETR P:LH/g
顺便说一句,您的模式也可以很好地匹配较长的端点,例如,
SETR p:LLHHHHHHHH
。如果需要将扩展名限制为两个字母,请使用。\>
(关键字边界)或。\A\@=
(非字母先行)。看起来您可以满足于:
:%s/SETR P:LL/SETR P:LH/
要从匹配中排除前面的文本,您可以使用look-behind断言或:
:%s/\(SETR P:L\)\@看起来您可以满足于:
:%s/SETR P:LL/SETR P:LH/
要从匹配中排除前面的文本,您可以使用look-behind断言或:
:%s/\(SETR P:L\)\@我已经在我的文件中尝试过了,而且效果很好。感谢您富有成效的回复:)啊,很高兴我能提供帮助!请单击概述的复选标记来接受答案。这样,问题被标记为已关闭,您就增加了获得未来问题答案的机会,因为这表明您关心答案。我已经在我的文件中试过了,并且效果良好。感谢您富有成效的回答:)啊,很高兴我能提供帮助!请点击勾选框接受答案。通过这种方式,问题被标记为已结束,并且您增加了获得未来问题答案的机会,因为这表明您关心这些答案。谢谢您如此有用的回答谢谢您如此有用的回答