如何解决Vim语法高亮显示:在括号内平分代码并指定每一侧
在这里为新脚本编写脚本,试图为类似ML的语言编写语法文件。
我想做的是应用类型语法突出显示规则来键入存在于冒号右侧和括号内的注释。
let foo (arg1 : Int) (arg2 : Maybe b) (arg3 : a -> b)
^^^ ^^^^^^^ ^^^^^^
我知道这不是一个问题,更多的是“请帮助”(很抱歉!),但是我已经为此花了很长时间,而且我真的不知道该怎么办解决它。我应该执行某种递归操作,还是需要一些正则表达式向导或我不知道的其他一些聪明的vim技巧。
?
解决方法
您可以使用:syntax region
命令在定界符(:
和)
)上进行匹配,这是最简单的方法。
这是一个比较幼稚的尝试,它可以工作,但也将分隔符放在语法组中:
syntax region Type start=":" end=")"
您可以通过在定界符中使用锚来改进它,使其仅在开始模式之后开始匹配,而在最后一个字符之前结束匹配。一。有关可能的锚点的详细信息,请参见:help :syn-pattern
。
syntax region Type start=":\s*"ms=e+1 end="\s*)"me=s-1
(这还会跳过类型和定界符之间的空格,如果您使用背景色来设置Type
组的样式,这可能会很重要。)
当然,这个答案有些简单化,因为在实际语法突出显示用例中,您经常会遇到更复杂的情况,即您多次匹配文本的相同部分,并且会进行复杂的交互语法匹配之间,其中一些包含在其他语法中,或者设置下一个匹配的组...但是希望这可以帮助您入门!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。