Vim语法匹配区域

时间:2018-03-16 09:25:33

标签: vim vim-syntax-highlighting

我是 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;
}

1 个答案:

答案 0 :(得分:1)

具有嵌套匹配项的语法区域必须允许它们:

syntax region _Comment start="\/\*" end="\*\/" contains=_CommentKey

查看:h syn-contains

对于您的第一个问题,您应该阅读:h syn-pattern,您会找到以下句子:

  

语法模式总是被解释为设置了'magic'选项,   无论“魔法”的实际价值是什么。

请参阅:h magic。你的正则表达式必须在魔术模式下逃脱@

"^\s*\*\s*\zs\@\w*\ze\s" 

应该可以正常工作