如何删除与 vi 中请求权限的模式匹配的所有行

how to delete all lines that match a pattern asking permission in vi

你好,我是 vi 的新手,我在让 vi 询问我是否允许删除带有模式的所有行时遇到了问题。我的文件如下所示:

SEQRES   1 A   46  GLY SER GLU ALA ARG GLU CYS VAL ASN CYS GLY ALA THR
SEQRES   2 A   46  ALA THR PRO LEU TRP ARG ARG ASP ARG THR GLY HIS TYR
SEQRES   3 A   46  LEU CYS ASN ALA CYS GLY LEU TYR HIS LYS MET ASN GLY
SEQRES   4 A   46  GLN ASN ARG PRO LEU ILE ARG

我想删除所有包含字符串 'GLY'

的行

这就是我想出的:

:g/GLY/cd

但是肯定是错的

只有:substitute命令有confirm标志。但是,如果您使用匹配整行(包括尾随换行符)的正则表达式,则可以使用它来删除整行,并确认:

:%s/.*GLY.*\n//c

或者,您可以在 :global 中构建您自己的确认;这是一个简单的问题,您必须使用 EnterEsc:

来回答
:g/GLY/if confirm('Delete: ' . getline('.')) | delete _ | endif

[使用替换的力量:%s] 要确认删除所有包含 vim 的行, :g/vim/s/.*//gc [这个确认——用空格替换所有匹配的行] :g/^$/d [这将删除所有空行]

奖励:确认删除所有 'begin' 和 vim 的行, :g/^vim/s/.*//gc :g/^$/d