【问题标题】:Search and replace across multiple lines with conversion to lower case in Vim在 Vim 中通过转换为小写来搜索和替换多行
【发布时间】:2011-02-20 22:57:10
【问题描述】:

对于许多文件中的每一个,这是我想做的:

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

【问题讨论】:

    标签: search vim replace lowercase substitution


    【解决方案1】:

    检查一下:

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

    这表示:匹配&lt;a href,后跟除&gt; 之外的零个或多个字符,包括换行符(由\_ 表示),最后是&gt;。将其替换为&lt;a href,将捕获的文本转换为小写(由\L 表示),以及结尾的&gt;

    如果你的标签中某处有&gt;,那么显然你是靠自己的,但这就是生活。

    (如果不清楚,您可以将其用作:%s/.../...:&lt;range&gt;s/.../.../ 用于一些较小的range。)

    要在多个文件上使用它,您将使用windobufdotabdo(取决于文件是作为选项卡、窗口还是仅作为缓冲区打开)。那里有很多文档:

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

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

    我在 bufdo 版本中添加了一个写入命令,因为它不能在不保存当前缓冲区的情况下移动到下一个缓冲区。如果您想立即写作,您也可以为其他人这样做,但他们会在没有的情况下工作。由您决定是否打开所有文件 - 最简单的方法是 vim &lt;lots of files&gt; 将它们作为缓冲区,或 vim -o &lt;lots of files&gt; 将它们作为窗口(使用 -O 垂直分割而不是水平分割)。

    【讨论】:

    • 真的非常感谢,这应该正是我想要的,我马上去看看!
    猜你喜欢
    • 1970-01-01
    • 2010-12-27
    • 2012-07-27
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2011-05-04
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多