【发布时间】:2011-02-20 22:57:10
【问题描述】:
对于许多文件中的每一个,这是我想做的:
- 搜索所有出现的
<a href,然后开始选择块 - 选择直到第一次出现
> - 将整个匹配转换为小写
【问题讨论】:
标签: search vim replace lowercase substitution
对于许多文件中的每一个,这是我想做的:
<a href,然后开始选择块>
【问题讨论】:
标签: search vim replace lowercase substitution
检查一下:
s/<a href\(\_[^>]*\)>/<a href\L\1>/
这表示:匹配<a href,后跟除> 之外的零个或多个字符,包括换行符(由\_ 表示),最后是>。将其替换为<a href,将捕获的文本转换为小写(由\L 表示),以及结尾的>。
如果你的标签中某处有>,那么显然你是靠自己的,但这就是生活。
(如果不清楚,您可以将其用作:%s/.../... 或:<range>s/.../.../ 用于一些较小的range。)
要在多个文件上使用它,您将使用windo、bufdo 或tabdo(取决于文件是作为选项卡、窗口还是仅作为缓冲区打开)。那里有很多文档:
一般来说,它可能看起来像这样:
:tabdo <range>s/.../.../
:windo <range>s/.../.../
:bufdo <range>s/.../.../ | w
我在 bufdo 版本中添加了一个写入命令,因为它不能在不保存当前缓冲区的情况下移动到下一个缓冲区。如果您想立即写作,您也可以为其他人这样做,但他们会在没有的情况下工作。由您决定是否打开所有文件 - 最简单的方法是 vim <lots of files> 将它们作为缓冲区,或 vim -o <lots of files> 将它们作为窗口(使用 -O 垂直分割而不是水平分割)。
【讨论】: