我在文件中有以下行:
HELLO(qwqwq)
My name ()
Your name ()
HELLO(dsdasd)
HELLO(sdsdsdasdasdasf)
我希望将其替换如下:
qwqwq:
My name ()
Your name ()
dsdasd:
sdsdsdasdasdasf:
这里我有一个模式HELLO(.*)
,可用于搜索和替换命令,但如何在vim中执行?
答案 0 :(得分:3)
这一行将为您提供给定示例的帮助:
%s/\vHELLO\(([^)]*).*/\1:/
使用:g
和normal
命令也很简单:
:g/HELLO/norm! %yi(VpA:
答案 1 :(得分:0)
首先,进行搜索(我选择不使用非常神奇的模式) 因为无论哪种方式,我都要使用escape" \"使用非常魔法, 它只会改变我必须使用的地方。
/HELLO(\([^)]*\))
( ..................... regular parenthesis
\( .................... start group 1
[^)]* ................. denies everything until \) closing group 1
\) ................... close group 1
) ..................... regular parenthesis
测试完搜索模式后,您可以在搜索中使用它, 这里我使用另一个分隔符而不是斜杠。省略搜索模式将使vim使用先前的搜索作为模式。
%s,,\1,g
我喜欢这种方法因为更安全,在进行任何更改之前我们可以使用搜索进行测试