Vi 语法高亮显示带括号的单词

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

您还可以使用前瞻,这将是更好的选择,因为它允许您避免某些元素进入匹配:

syn match rFunction "\(\(\a\|[.][._\a]\)[._\w]*\)\+\ *[(]\@="

相关内容