2013-04-25 13 views
20

Jest to tekstJak usunąć wszystkie linie pasujące do wzorca i linii po w 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 

Jak usunąć każdą parę linii pasujących pierwszą linię, na przykład "Ta linia zawiera słowo ..." i linię następującą po tym. Wynik byłby:

Title of the text 

Loren ipsum dolorem... 

The end of the article 

Odpowiedz

37

Można użyć

:g/word/normal 2dd 

to wyszukuje wszystkie wystąpienia programu Word, a następnie wykonuje komendę po niej. W tym przypadku wykonuje 2dd w trybie normalnym

20

Zastosowanie :g[lobal] poleceniem d[elete] z zakresu ,+1 usunąć dopasowaną linię i następny:

:g/word/,+1d 
+0

Inny wariant, jeśli chcesz usunąć pasującą linię i linię przed nim, a następnie użyj: ': g/pattern/-1n, .d' – Dmytro

4

Można użyć polecenia :g[lobal]:

:g/This line/norm 3dd 
2

inny sposób z: g

:g/word/norm dj 
-3

Możesz spróbować tego:

:g/your pattern go here/d 
+0

Podczas gdy ta linia kodu może odpowiedzieć na pytanie, najlepiej byłoby podać wyjaśnienie, dlaczego tak się dzieje. – David

+0

To polecenie usuwa tylko pasującą linię, ale nie linię za nią. Tak więc nie odpowiada na pytanie. – Dmytro

Powiązane problemy