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 № 1Aby 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.