Есть ли в Vim способ поиска строк, которые соответствуют, скажем, abc
, но не содержат xyz
позже в строке? Таким образом, следующие строки будут соответствовать:
The abc is the best
The first three letters are abc
и следующее не будет соответствовать:
The abc is the best but xyz is cheaper
The first three letters are abc and the last are xyz
Я знаю о синтаксисе, подобном следующему:
/abc\(xyz\)\@!
но это только позволяет избежать совпадения abcxyz
, а не если между ними есть что-то среднее, например abc-xyz
. С использованием
/abc.*\(xyz\)\@!
также не работает, потому что в строке есть много позиций, где xyz
не соответствует.
(Я должен отметить, что в командной строке я бы сделал что-то вроде grep abc <infile | grep -v xyz
, но я хотел бы сделать это интерактивно в Vim.)