2015-04-01 54 views
4

你好我是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 

,但它绝对是错误的

+0

':g/GLY/d'怎么样? – user3510227 2015-04-01 15:51:17

+1

它没有要求权限 – steT 2015-04-01 16:04:46

+1

加+1用于使用vim进行基因工程! – ErichBSchulz 2016-12-31 22:52:55

回答

3

只有:substitute命令具有c onfirm标志。但是,如果您使用的是整条生产线(包括尾随的换行符)相匹配的正则表达式,你可以用它来删除整个线,确认:

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

或者,你可以建立自己确认为:global;这里有一个简单的,你必须回答与任何输入Esc键

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

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

奖励:要确认删除所有'开始'用vim, :g/^ vim/s /.*// gc :g/^ $/d