LINUX.ORG.RU

Vim: как подсвечивать скобки, операторы и т.д.?


0

0

Как заставить vim подсвечивать арифметические операторы, скобки, запятые, "->", ";", и всё такое? В синтаксических файлах таких групп нет...

syn match Operator /=/ --- не всегда правильно подсвечивает

Как сделать правильно?

anonymous

надо поставить емакс - в это настраивать не надо

anonymous
()

Надо прочитать :h syntax, обратив пристальное внимание на использование оператора "contained", прошерстить файл с описанием синтаксиса на предмет перекрывающихся правил для операторов и убедиться, что операторы попадают во все нужные кластеры.

Jini ★★
()
Ответ на: комментарий от Jini

>Надо прочитать :h syntax, обратив пристальное внимание на использование оператора "contained", прошерстить файл с описанием синтаксиса на предмет перекрывающихся правил для операторов и убедиться, что операторы попадают во все нужные кластеры.

А еще вопрос: это можно сделать универсально для всех типов файлов?

anonymous
()
Ответ на: комментарий от anonymous

Вряд ли. Думаю, максимум что можно сделать не привязываясь к типу файла --- это написать что-то вроде

syn match Operator /=/ containedin=ALL

но почти всегда нужны исключения из этого правила. Например, для исходников C это могут быть строки: в выражении типа

char* x = "a = b";

оба знака равенства будут подсвечиваться. Можно написать containedin=ALLBUT и дальше перечислить все группы для всех файлов, в которых подсветка не нужна (по стандарту они должны иметь разное название), но это, очевидно, не универсальное решение. Кроме того, если оператор создаёт регион и для него уже задана подсветка (например, скобки в баше), то придётся переопределять matchgroup для этого региона или highlight для соответствующей matchgroup группы.

Jini ★★
()
Ответ на: комментарий от Jini

ОК, спасибо. Буду делать для каждого языка отдельно.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.