Предположим, следующий текстовый файл:

A
B

Или, другими словами, файл, содержащий только строку A\nB .

Давайте посмотрим, смогу ли я сопоставить любой B предшествующим A и символом новой строки. Достаточно просто. Я могу сделать это успешно с / -поиск: /A\n\zsB . B теперь выделено.

Но то, что я действительно хочу сделать, это применить подсветку синтаксиса к B Соответственно, я пытаюсь :syn match Statement 'A\n\zsB' , но это ничего не делает. У кого-нибудь есть идея, почему?

(И только для того, чтобы предупредить предложения о том, что я, возможно, не включил подсветку синтаксиса правильно:: :syn match Statement 'A\n\B' работает должным образом: A и B меняют цвет.)

1 ответ1

1

Это документированное поведение. Смотрите :help :syn-multi-line , цитируемый здесь:

When using a start pattern with an offset, the start of the match is not
allowed to start in a following line.  The highlighting can start in a
following line though.  Using the "\zs" item also requires that the start
of the match doesn't move to another line.

Решение состоит в том, чтобы указать, где начинается выделение, а не где начинается совпадение. Например:

:syn match Statement 'A\nB'hs=e-1

Смотрите :help :syn-pattern-offset .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .