我有Java文件后的语法。它有效,因为我已经定义了一些成功突出显示的语法关键字、匹配项和区域。
不是我想突出显示一些匹配项,它们在我之前定义的突出显示区域内。我的意图是首先突出显示该区域,然后匹配该区域的部分。
确切的用例是 function/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;
}
具有嵌套匹配项的语法区域必须允许它们:
syntax region _Comment start="\/\*" end="\*\/" contains=_CommentKey
看一下 :h syn-contains
对于你的第一个问题,你应该阅读:h syn-pattern
那里你会发现以下句子:
无论 'magic' 的实际值是什么,语法模式总是像设置了 'magic' 选项一样被解释。
看看:h magic
那个。您的正则表达式必须@
以魔术模式转义。
"^\s*\*\s*\zs\@\w*\ze\s"
应该工作正常
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句