2015-04-01 51 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