我有一个很大的 html 文件,需要在其中搜索和替换超过 2000 个特定字符串。我可以手动完成,但我确信有一个强大的 Vim 搜索和替换命令可以完成它。
我有脚注,需要替换超链接文本的特定部分。
脚注链接的格式如下:
<sup><a href='#footnote-2020'>2020</a></sup>
有超过 2000 个脚注,每个脚注都标有 1-2020。我想删除锚文本(上例中的 2020)并将其替换为 *。我想保留 href 文本“#footnote-2020”以保留链接。
是否有任何高级 Vim 用户可以想出快速搜索和替换命令?
谢谢!
答案1
尝试这个:
:%s,\(<a href='#footnote-\d\+'>\)\d\+\(</a>\),\1*\2,g
具体来说:
%
- 操作整个文件(这是一个特殊范围)
,...,...,
- 通常 :substitute 的分隔符是 /,但它可以是任何分隔符。我使用逗号是因为 </a> 标签。
\(...\)
- 创建一个子表达式,用于替换模式。使用了两个这样的表达式。
\d\+
- 匹配任何数字,并使其\+
匹配一个或多个。
\1
/ \2
- 在替换模式中,用前面提到的第一个和第二个子表达式替换。
g
- 替换模式后的“g”标志表示在每一行中进行全局操作,而不仅仅是在一行中的第一个匹配项上进行操作。
所有这些和更多内容都在其中进行了解释,:help pattern.txt
但这可能让人不知所措。有一本名为“掌握正则表达式”的书可能会有所帮助。