搜索并替换多行,并在Vim中转换为小写

时间:2010-05-18 15:03:25

标签: search vim replace lowercase substitution

以下是我想要做的事情,对于许多文件中的每一个:

  • 搜索所有出现的<a href,然后开始区块选择
  • 选择直到第一次出现>
  • 将整个匹配转换为小写

1 个答案:

答案 0 :(得分:15)

检查出来:

s/<a href\(\_[^>]*\)>/<a href\L\1>/

这说:匹配<a href,后跟>以外的零个或多个字符,包括换行符(由\_表示),最后是>。将其替换为<a href,捕获的文本转换为小写(由\L表示),尾随>

显然,如果标签内部有>,那么你就是自己的,但这就是生活。

(如果不清楚,您可以将其用作:%s/.../...:<range>s/.../.../用于较小的range。)

要在多个文件上使用此功能,您将使用windobufdotabdo(取决于文件是以标签,窗口还是仅作为缓冲区打开) 。那里有很多文档:

一般来说,它可能看起来像这样:

:tabdo <range>s/.../.../
:windo <range>s/.../.../
:bufdo <range>s/.../.../ | w

我已经向bufdo版本添加了一个写命令,因为它无法保存当前的缓冲区,无法移动到下一个缓冲区。你也可以为其他人做这件事,如果你想立即写作,但他们可以不用。由您决定打开所有文件 - 最简单的方法是vim <lots of files>将它们作为缓冲区,或vim -o <lots of files>将它们作为窗口(使用-O垂直拆分而不是水平方向)。