Vim拉动/复制文件中的所有多行样式

jlc*_*lin 2 regex vim multiline

我有一个大文件,我只想在其中复制与正则表达式(多行)模式匹配的文件部分。我发现某个地方(可能是StackOverflow)可以做到这一点:

:g/z=45117\.1[0-9]\{2}nm\_.\{-}end/y
Run Code Online (Sandbox Code Playgroud)

此模式找到了我期望的所有条目,但是yank操作仅拉动找到的第一个匹配项的第一行

我需要什么vim魔术来抽出多行模式所有匹配项的所有行?

Nim*_*azi 6

A在命令末尾添加带空格的:

:g/z=45117\.1[0-9]\{2}nm\_.\{-}end/y A
Run Code Online (Sandbox Code Playgroud)

它将模式拉到register中a,因此您可能需要在命令之前清除它:

:let @a = ''
Run Code Online (Sandbox Code Playgroud)

  • 更快的寄存器清除:“ qaq”(将宏记录到“ @a”并立即停止)。 (3认同)
  • 这并没有像我希望的那样起作用。当我粘贴(使用“Ap”)时,它仍然只是粘贴第一行而不是多行字符串。 (2认同)