1

例如,如果我想<person>Nancy</person>用vim<person>Henry</person>中的所有出现替换?<person>*</person>

目前,我有:

%s:/'<person>*<\/person>/<person>Henry<\/person>

但显然,这是错误的。

4

2 回答 2

1
:%s/\v(<person>).\{-}(<\/person>)/\1Henry\2/g

做你想做的,但是,是的,英戈说的。

  • \v意思是“非常神奇”:这是避免反斜杠炎的便捷方法。

  • (something)(或\(something\)没有\v修饰符)是一个子表达式,您可以在您的搜索模式中拥有多达九个,并在\1...\9您的替换模式中甚至稍后在您的搜索模式中重用这些捕获组。\0代表整场比赛。在这里,开始标签被引用为\1,结束标签被引用为\2

于 2013-10-05T00:15:18.267 回答
1

对于单个替换,Vim 提供了方便的cit(更改内部标记)命令。

对于全局替换,答案取决于您的标签(汤)的结构如何。HTML / XML 具有相当灵活的语法,因此您可以用多种方式表达相同的内容,构建一个匹配所有内容的正则表达式变得越来越困难。(试图抓住所有案例是徒劳的;请参阅这个著名的答案。)

于 2013-10-04T20:11:44.927 回答