如何在vi编辑器中删除所有符合特定模式的行(需要确认权限)

5
你好,我是一个新手,不太会使用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

但是这绝对是错误的。


:g/GLY/d 怎么样? - user3510227
2
它不要求许可。 - steT
1
加一分,如果你使用vim进行基因工程! - ErichBSchulz
@ErichBSchulz,这不是+1的用法。 - Danny Watson
我认为任何使用vim进行基因工程的人都应该得到一个加分!因为显然,vim可以做任何事情! - ErichBSchulz
2个回答

5

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

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

或者,您可以在:global中构建自己的确认方式;这里有一个简单的确认方式,您必须用EnterEsc来回答:

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

0

[利用替换的威力 :%s] 确认删除所有包含vim的行, :g/vim/s/.*//gc [这将确认替换所有匹配的行为空白行] :g/^$/d [这将删除所有空白行]

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接