Надо прочитать :h syntax, обратив пристальное внимание на использование оператора "contained", прошерстить файл с описанием синтаксиса на предмет перекрывающихся правил для операторов и убедиться, что операторы попадают во все нужные кластеры.
>Надо прочитать :h syntax, обратив пристальное внимание на использование оператора "contained", прошерстить файл с описанием синтаксиса на предмет перекрывающихся правил для операторов и убедиться, что операторы попадают во все нужные кластеры.
А еще вопрос: это можно сделать универсально для всех типов файлов?
Вряд ли. Думаю, максимум что можно сделать не привязываясь к типу файла --- это написать что-то вроде
syn match Operator /=/ containedin=ALL
но почти всегда нужны исключения из этого правила. Например, для исходников C это могут быть строки: в выражении типа
char* x = "a = b";
оба знака равенства будут подсвечиваться. Можно написать containedin=ALLBUT и дальше перечислить все группы для всех файлов, в которых подсветка не нужна (по стандарту они должны иметь разное название), но это, очевидно, не универсальное решение. Кроме того, если оператор создаёт регион и для него уже задана подсветка (например, скобки в баше), то придётся переопределять matchgroup для этого региона или highlight для соответствующей matchgroup группы.