需要帮助制定 Vim 搜索和替换

需要帮助制定 Vim 搜索和替换

我有一个很大的 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但这可能让人不知所措。有一本名为“掌握正则表达式”的书可能会有所帮助。

相关内容