Vim语法突出显示:将括号内的代码对分,并以每边为目标

Vim语法突出显示:将括号内的代码对分,并以每边为目标,vim,vim-syntax-highlighting,Vim,Vim Syntax Highlighting,Vim脚本新手,正在尝试为类似ML的语言编写语法文件 我要做的是将类型语法突出显示规则应用于存在于冒号右侧和括号内的类型注释 我知道这不是一个问题,更多的是一个“请帮助”(道歉!),但我一直在为此而头痛,我真的不知道我该如何处理它。我应该做某种递归,还是需要一些正则表达式魔法,或者其他一些我不知道的聪明的vim技巧 您可以使用命令匹配分隔符(:和)),这是最简单的方法 这是一个有点幼稚的尝试,它可以工作,但也将分隔符放在语法组中: syntax region Type start=":

Vim脚本新手,正在尝试为类似ML的语言编写语法文件

我要做的是将类型语法突出显示规则应用于存在于冒号右侧和括号内的类型注释

我知道这不是一个问题,更多的是一个“请帮助”(道歉!),但我一直在为此而头痛,我真的不知道我该如何处理它。我应该做某种递归,还是需要一些正则表达式魔法,或者其他一些我不知道的聪明的vim技巧

您可以使用命令匹配分隔符(
),这是最简单的方法

这是一个有点幼稚的尝试,它可以工作,但也将分隔符放在语法组中:

syntax region Type start=":" end=")"
您可以通过在分隔符中使用锚来改进它,只在开始模式之后的第一个字符上开始匹配,并在结束模式之前的最后一个字符上停止匹配。有关可能的锚的详细信息,请参阅

syntax region Type start=":\s*"ms=e+1 end="\s*)"me=s-1
(此选项还跳过类型和分隔符之间的空格,如果您使用背景色设置
类型
组的样式,这可能很重要。)

当然,这个答案有点过于简单,因为在真正的语法突出显示用例中,您经常会遇到更复杂的情况,在这种情况下,您会多次匹配文本的相同部分,并且语法匹配之间会有复杂的交互,其中一些包含在其他部分中,或设置下一组以匹配。。。但希望这能让你开始

考虑使用堆栈解决Vim上的问题!你会在那里找到很多Vim专家。(很多人也倾向于在这里闲逛,但你可能会在那里获得更多的能见度。)干杯!
syntax region Type start=":\s*"ms=e+1 end="\s*)"me=s-1