你好我是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 :(得分:4)
只有:substitute
命令具有c
onfirm标志。但是,如果使用与整行(包括尾部换行符)匹配的正则表达式,则可以使用该表达式删除整行,并进行确认:
:%s/.*GLY.*\n//c
或者,您可以在:global
中建立自己的确认;这是一个简单的,你必须用 Enter 或 Esc 来回答:
:g/GLY/if confirm('Delete: ' . getline('.')) | delete _ | endif
答案 1 :(得分:0)
[使用替换的力量:%s] 要确认删除包含vim的所有行, :g / vim / s /.*// gc [这确认 - 用空格替换所有匹配的行] :g / ^ $ / d [删除所有空白行]
奖励:要确认删除所有与vim'开头'的行, :克/ ^ VIM / s的/.*// GC :克/ ^ $ / d