/ / Jak pisać asercje o zerowej szerokości w vim? - vim

Jak napisać asercje o zerowej szerokości w vim? - vim

Oto surowiec, z którym pracuję:

line1=a1 abc
line2=abc
line3=aba
line4=cbc

chcę dopasować linie, które nie zawierają ciągów znaków "abc", wynikiem jest:

line3=aba
line4=cbc

jak mogę go zdobyć w vimie? może wyrażenie to coś takiego jak (?!ABC) w perlu, nie jestem pewien, jak napisać wyrażenie regularne w vim.

Odpowiedzi:

3 dla odpowiedzi № 1

Aby dopasować linie nie kończące się na abc, możesz napisać wyrażenie na dwa sposoby. Moja ulubiona jest z wielką magią

/v.*(abc)@!/

I bez żadnej magii:

/.*(abc)@!/

Polecam ci trochę czasu na przeczytanie:

:help magic

1 dla odpowiedzi nr 2

Od Power Of G:

Usuń wszystkie linie, które nie pasują do wzorca.

:g!/<pattern>/d

Oczywiście możesz zastąpić d na koniec zrobić coś innego niż usunięcie linii ...


1 dla odpowiedzi nr 3

Wygląda na to, że znasz już wyrażenia regularne Perla. Prawdopodobnie będziesz zainteresowany :help perl-patterns gdzie możesz używać odpowiedników Vima dla zwykłych wzorców regex Perla. Tam możesz zobaczyć, że chcesz mieć negatywną perspektywę zerową szerokości @!.

W przypadku innych wzorów zerowej szerokości, w tym niektórych niewymienionych w :help perl-patterns, widzieć :help /@= i następne. Również przydatne są zs i ze co pozwala uniknąć wielu bardziej złożonych dopasowań o zerowej szerokości w wielu przypadkach.