Подсветка синтаксиса 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]*\)\+\ *[(]\@="