我是 Java 文件之后的语法。它有效,因为我已经定义了一些成功突出显示的语法关键字,匹配和区域
我不想突出显示一些匹配,这些匹配位于我之前定义的高亮区域内。我的意图是该区域首先突出显示,之后的匹配将覆盖该区域部分
确切的用例是函数/ class / ...描述,包含@author
,@version
等文档关键字,...我将以下内容写入语法文件:
syntax region _Comment start="\/\*" end="\*\/"
syntax match _CommentKey "^\s*\*\s*\zs@\w*\ze\s"
highlight link _Comment Comment
highlight link _CommentKey Special
不,我有两个问题。我独立测试,评论区域工作正常。评论键匹配仅在\zs
部分不起作用,因此它也会突出显示前导*
。一旦我添加\zs
,就不再突出显示任何内容。我怎么解决这个问题?对于其他比赛,这很好
第二个问题:我不是他们合起来的。如果我启用这两个规则,则只会将整个部分突出显示为Comment
。我放置第二条规则并不重要,它不会突出显示。此外,我尝试将skip
用于该地区,直到我认识到它意味着不同的东西
有任何想法吗?谢谢!
要测试的示例代码:
/**
* Function description here.
*
* @param id
* @author Max Mustermann
*/
private static int function foo(final int id) {
return id;
}
答案 0 :(得分:1)
具有嵌套匹配项的语法区域必须允许它们:
syntax region _Comment start="\/\*" end="\*\/" contains=_CommentKey
查看:h syn-contains
对于您的第一个问题,您应该阅读:h syn-pattern
,您会找到以下句子:
语法模式总是被解释为设置了'magic'选项, 无论“魔法”的实际价值是什么。
请参阅:h magic
。你的正则表达式必须在魔术模式下逃脱@
。
"^\s*\*\s*\zs\@\w*\ze\s"
应该可以正常工作