Подсветка синтаксиса Vi для слов с последующими скобками
Я хочу изменить цвет ключевого слова, за которым следует левая скобка в файле.R.
Например, когда я печатаю length()Я хочу слово length быть выделены (а не скобки), но когда я печатаю только length он не получит никакого выделения.
Я также хотел бы указать цвет подсветки на основе слова. Так length() а также function() должны привести к различным цветам для length а также function,
Редактировать: до сих пор я использую следующую строку в моем файле синтаксиса r.vim, чтобы соответствовать действительному имени объекта R с последующим ((:
syn match rFunction "\(\(\a\|[.][._\a]\)[._\a0-9]*\)\+\ *("
И это прекрасно работает, но я не хочу выделять это ( в конце, но лучше установить его по умолчанию.
1 ответ
Поскольку у вас уже есть соответствующий шаблон, я думаю, вы можете использовать смещение для выделения. От vim документация:
*:syn-pattern-offset*
The pattern can be followed by a character offset. This can be used to
change the highlighted part
...
Example:
:syn match String /"[^"]*"/hs=s+1,he=e-1
some "string" text
^^^^^^ highlighted
Поэтому я думаю, что это должно сделать работу:
syn match rFunction "\(\(\a\|[.][._\a]\)[._\w]*\)\+\ *("he=e-1
Вы также можете использовать lookaheads, что было бы предпочтительнее, так как это позволяет избежать попадания некоторых элементов в совпадение:
syn match rFunction "\(\(\a\|[.][._\a]\)[._\w]*\)\+\ *[(]\@="