加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

vim – 如何删除模式不存在的所有段落?

发布时间:2020-12-16 01:36:42 所属栏目:安全 来源:网络整理
导读:我记录了我参加的会议的日志. 每次会议: 由空行分隔( – 每个会议是段落) 由于表达而折叠 包含一行与相应的标签:ACME,GMBH,SARL等… 当我想要审查我所有的会议时,例如ACME, 我创建一个临时缓冲区(:%y,然后是:tabnew,然后是粘贴) 我希望消除ACME没有想到
我记录了我参加的会议的日志.

每次会议:

>由空行分隔( – >每个会议是段落)
>由于表达而折叠
>包含一行与相应的标签:ACME,GMBH,SARL等…

当我想要审查我所有的会议时,例如ACME,

>我创建一个临时缓冲区(:%y,然后是:tabnew,然后是粘贴)
>我希望消除ACME没有想到的所有段落.

这是我遇到问题的地方.

我知道如何按行搜索/删除:

:v/ACME/d

但是我该如何逐段完成(以便将整个段落保留在ACME数据中,而不是唯一的标记行)?

注意:ACME的模式可以在这些段落中不止一次.

这有效:
let @r="" | execute("g/acme/ normal "Rdap") | %d | put r

它转到包含“acme”的每个段落,并删除它附加到寄存器r.然后删除所有内容并放入寄存器r.

如您所见,基本技巧是使用大写字母寄存器添加到它,而不是替换其内容.这还需要在开始时重置寄存器,以丢弃先前的寄存器内容.

这适用于多次出现“acme”的段落,因为整个段落在第一次匹配后被删除,因此,它不会再次匹配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读