Muszę wyszukać wiersze, które zawierają jakieś słowo, ale nie zawierają drugiego słowa.
Na przykład znajdź wiersze zawierające słowo „To”, ale nie słowo „czerwony”
tak że dla pliku zawierającego te linie
This is a blue coat
This is a red coat
This is a purple coat
That is a coat
Wyszukiwanie zlokalizuje tylko pierwszą i trzecią linię.
Dziękuję za wszelkie porady!
Odpowiedzi:
Możesz użyć tego polecenia, aby wydrukować wiersze zawierające,
This
a niered
:\&
rozdziela gałęzie jak logicznie,AND
ponieważ chcemy linii, które spełniają dwa warunki (gałęzie),\(.*This\)
to pierwsza gałąź, może po prostu być,This
ale w ten sposób jest bardziej ogólna,\(.*red\)\@!
to druga gałąź,\@!
oznacza „dopasowanie zerowej szerokości, jeśli poprzedni atom nie pasuje”, jak logiczneNOT
.Innymi słowy:
źródło
Spójrz na ten post.
Połącz to z odpowiedzią @romainl i możesz robić, co chcesz.
Przykład: Powiedzmy, że chcę dodać a
const
do funkcji, które ich nie mają.Skrypt VIM:
Wynik:
Wyjaśnienie:
- zdobądź mi wszystkie linie, które ma
word =
- łączyć zasady
- linia nie powinna zawierać
const
.źródło