删除与模式匹配的行并将其放入缓冲区

2021-02-19 11:57

I正在尝试执行此操作:删除与模式匹配的行,然后将这些行复制到文件中的其他位置。:g/pattern/d会删除这些行,但当我使用p或p时,只有最后一行从内部缓冲区插入

解答动态

  • 您可以删除寄存器:
    首次清洁例如,在正常模式下用qqq注册q。
    然后使用:g/PATTERN/norm!quot;qdd时,用删除的文本替换q寄存器的内容,但如果使用quot;qp将寄存器的内容传递到您想要传递的位置。
    另一种解决方案是将:h:move与global命令结合使用。例如,移动缓冲器:
    :g/PATTERN/move$

    • 仅返回最后一行的原因是:g逐行处理找到的行。这意味着下一次删除操作都会覆盖所用寄存器的上一个内容。
      要克服此问题,必须使用命名寄存器(a-Z)并使用大写名称,这会导致新内容不会覆盖上一个内容,而是附加到寄存器。
      g/PATTERN/d a 会将所有删除的行附加到寄存器a。
      现在该寄存器不会为空,因此在使用它之前必须清除其内容。
      qaq将开始将宏记录到寄存器a中,并立即再次停止,从而清除其内容。

      • End

      免责声明:

      本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。