gpt4 book ai didi

搜索并删除多行

转载 作者:行者123 更新时间:2023-12-03 07:36:13 26 4
gpt4 key购买 nike

在 vim 中

:g/George Bush/d

删除与乔治布什有关的所有行。

如果我想删除下面以 George Bush 开头的 5 行该怎么办?

另一个现实的例子是在 log4net 日志中找到所有 DEBUG 并删除直到堆栈跟踪的末尾(我知道这将是它下面的另外 10 行)

最佳答案

:global 命令是你的 friend - 好好学习它。它允许您在与正则表达式匹配的每一行上运行任意 :ex 命令。它缩写为:g。

删除所有与“George Bush”匹配的行:

:g/George Bush/ d

后面的命令可以有自己的地址/范围前缀,该前缀与匹配的行相关。因此要删除 George Bush 之后的第 5 行:

:g/George Bush/ .+5 d

删除 DEBUG 日志条目:

:g/DEBUG/ .,+10 d

如果您知道堆栈跟踪的长度是可变的,但总是以空行(或其他正则表达式)结束:

:g/DEBUG/ .,/^$/ d

您还可以在与 :g! 不匹配的每一行上执行命令。例如在不包含“sucks”一词的每一行将“Bush”替换为“Obama”:

 :g!/sucks/ s/Bush/Obama/

默认命令是将行打印到消息窗口。例如列出标记为 TODO 的每一行:

 :g/TODO

这对于在执行破坏性操作之前检查正则表达式是否与您期望的行匹配也很有用。

您可以使用“|”链接多个命令。例如将每行不包含“sucks”的 Bush 更改为 Obama,将 George 更改为 Barack:

 :g!/sucks/ s/Bush/Obama/g | s/George/Barack/g

关于搜索并删除多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2070120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com