Vim语法:将区域中的正则表达式匹配到关键字之后的AND之前

时间:2015-01-15 01:39:17

标签: regex vim vim-syntax-highlighting

我正在寻找一种方法来编写.vim语法脚本,以便灵活地匹配区域内的变量名称。

我试图强调的语言部分的语法是这样的:

Function(arg1, arg2, ... argn);

其中args的格式为infoo=outfoo

这种语言忽略了空格。 我到目前为止的代码表示区域parens

syn region parens start='(' end=')'

有没有办法使用syn match 'regex'命令将正则表达式与=区域中的parens字符之前和之后匹配?

问题比简单匹配parens区域中的所有字词更复杂,因为我需要突出显示infoooutfoo,除非其中一个已经实现了语法突出显示。换句话说,infoooutfoo必须是不同的颜色,具体取决于它们是被声明为变量名还是硬编码到语言中。

我的大部分努力都跟着the Vim wiki guide,我发现很难理解Vim documentation。这是我第一次尝试编写或编辑Vim语法高亮显示

1 个答案:

答案 0 :(得分:2)

您正在寻找语法包含;通过contains={group},...,你告诉Vim解析区域内的参数(否则,区域匹配会阻止其他语法匹配)。然后,您将使用contained参数为参数定义语法匹配,以便Vim仅尝试匹配内部(区域)的参数。

这是一个分别解析 out 部分中的的示例;你可以调整它,甚至定义另一个嵌套的包含:

syn region parens start='(' end=')' contains=inArgument,outArgument
syn match inArgument "\w\+=\@=" contained
syn match outArgument "=\@<=\w\+" contained

注意:语法名称最好遵循其他语法脚本中的{languageName} {SyntaxElementName}样式。