2013-04-25 20 views
20

C'è un testoCome eliminare tutte le linee che corrispondono a un modello e una linea dopo in Vim?

Title of the text 

This line contains a word that is matched by the pattern and it should be deleted. 
Next line is supposed to be deleted as well. 

Loren ipsum dolorem... 

This line contains a word that is matched by the pattern and it should be deleted. 
And this one should be deleted 

The end of the article 

Come cancellare ogni coppia di linee corrispondenti alla prima linea, per esempio 'Questa riga contiene una parola ...' e la linea dopo quella. Risultato sarebbe:

Title of the text 

Loren ipsum dolorem... 

The end of the article 

risposta

37

È possibile utilizzare

:g/word/normal 2dd 

questo trova tutte le istanze di parola e poi esegue il comando dopo di esso. In questo caso si esegue 2dd in modalità normale

20

Usa :g[lobal] con un comando d[elete] con una gamma ,+1 per cancellare la linea abbinato e la successiva:

:g/word/,+1d 
+0

Un'altra variante se si desidera eliminare la riga e la linea corrispondenti prima di essa, quindi utilizzare::: g/pattern/-1n, .d' – Dmytro

4

È possibile utilizzare il comando :g[lobal]:

:g/This line/norm 3dd 
2

un altro modo con: g

:g/word/norm dj 
-3

si consiglia di provare questo:

:g/your pattern go here/d 
+0

Sebbene questa riga di codice possa rispondere alla domanda, sarebbe meglio se fosse possibile fornire una piccola spiegazione del motivo per cui lo fa. – David

+0

Questo comando elimina solo la linea corrispondente, ma non la linea dopo di essa. Quindi, non risponde alla domanda. – Dmytro

Problemi correlati