例如,如果我想将<person>Nancy</person>
替换为<person>Henry</person>
,请将所有<person>*</person>
替换为vim?
目前,我有:
%s:/'<person>*<\/person>/<person>Henry<\/person>
但显然,这是错误的。
答案 0 :(得分:1)
对于单个替换,Vim提供了方便的cit
(更改内部标记)命令。
对于全球替代,答案取决于您的标签(汤)的结构良好程度。 HTML / XML具有非常灵活的语法,因此您可以以各种方式表达相同的内容,并且构建与它们匹配的正则表达式变得越来越困难。 (试图抓住所有案例是徒劳的;请参阅this famous answer。)
答案 1 :(得分:1)
:%s/\v(<person>).\{-}(<\/person>)/\1Henry\2/g
做你想要的但是,Ingo说的。
\v
表示“非常神奇”:这是一种避免反斜视的便捷方法。
(something)
(或\(something\)
没有\v
修饰符)是一个子表达式,您的搜索模式中最多可以有九个并重用这些捕获组在替换模式中使用\1...\9
,或者甚至在搜索模式中更晚。 \0
代表整场比赛。此处,开始标记引用为\1
,结束标记引用为\2
。