usuń linie, które pasują do wzorca z danej linii na końcu pliku

10

Jeśli mam plik z dużą ilością komentarzy i chcę usunąć wszystkie komentarze z powiedzmy wiersza 3 na końcu pliku, jaki jest najlepszy sposób, aby to zrobić?

Utknąłem, ponieważ to, co pierwszy raz spróbowałem, nie robi dokładnie tego, czego chcę:

:3,$/^#/d

Zamiast szukać wzoru i usuwania linii z nim od 3 do końca pliku, usuwa wszystkie linie od 3 do linii pasującej do wzoru, a następnie zatrzymuje się.

Jak zastosować polecenie ex do zakresu wierszy. W tym przypadku jest to do końca pliku, ale czy byłoby inaczej, gdybym zrobił to do znaku, między wierszami 10 i 20 lub innymi zakresami?

Eric Renouf
źródło

Odpowiedzi:

15

Użyj do tego :globalpolecenia:

:3,$g/^#/d

Można stosować go na linie nie pasujące do wzorca:

:3,$g!/^#/d

Możesz z nim korzystać z mechanizmu pełnego zakresu (patrz :help :range):

:.,/#define/+3g/^#/d

Możesz go używać z dowolnym poleceniem:

:3,$g/^#/s/foo/bar/g

Jest to jedno z najpotężniejszych poleceń w Vimie, zobacz :help :globalszczegóły.

lcd047
źródło
Możesz także użyć :3,$v/foo/ddo linii, które nie pasują do wzorca. :h vglobal
vappolinario,