当您尝试从一行中删除 html 标签时,一种可能的方法是使用 :s 命令并编写一个同时理解标签开头和结尾的正则表达式。我的目标是:
:s %</?center>%%g
但是这样,vim 说它什么也没找到。所以我不得不改用以下方法,这很有效:
:s %</*center>%%g
为什么一个有效而另一个无效?不应该?说“之前的角色可以来一次,或者根本不来”吗?
你需要?用\.
参考帮助页面:
:h pattern-overview
他们不一样。
这 ?(问号)仅匹配前面的字符 0 或 1 次,例如,colou?r 将同时找到 color(0 次)和 color(1 次)。
*(星号或星号)与前面的字符匹配0 次或多次,例如,tre* 将找到 tree(2 次)、tread(1 次)和 trough(0 次)。
你能告诉我们将被替换的比赛吗?
此外,我知道这种操作是使用该命令完成的,该命令s/foo/bar/g将替换每次出现的foowithbar
如果你想像这样使用?必须使用 vim 的very magic正则表达式模式 ( \v),但是这也将<和解释>为单词边界,所以现在需要对它们进行转义:
:%s,\v\</?center\>,,g
正如您所发现的,这里较短的选项是转义?:
:%s,</\?center>,,g
查看:help /magic更多。