vim语法-如何突出显示区域内的匹配项

时间:2019-07-15 21:35:47

标签: vim syntax-highlighting vim-syntax-highlighting

我正在编写vim语法高亮脚本,以确定全局参数是否仅大写。如果不是,我想突出显示它。 问题在于全局参数位于页面的特定部分。

代码看起来像这样:

// Find All elements at once
    list<WebElement> pictureURLs = driver.findElements(By.xpath("//div[@class='gallery- 
    list']//a/picture"));
//Loop through the element list & print the required attributes
    for(WebElement pictureurl:pictureURLs)
    {
    System.out.println(pictureurl..get_attribute("sl-video-preview"));
    }

所以我希望 VARS 下的所有包含小写字母的变量都突出显示-在我的示例中,仅应突出显示$ {var2}。

我试图这样做:

***VARS***
${VAR1}
${var2}

***OTHERS***
${var3}

但是还会突出显示$ {VAR1}和$ {var2}。

1 个答案:

答案 0 :(得分:0)

一个问题是输入中的简单错字:

hi link global_variables ErrorMsg

应该是

hi link global_var_match ErrorMsg

即匹配不良,而不是包含区域。但是,通过此更改,包含小写字母的变量仍在***OTHERS***下匹配。

该问题是由您与***OTHERS***的匹配中存在虚假空格引起的。

我还更改了您的global_var_match正则表达式。我有它:

syn match global_var_match "\${[^}]*[a-z][^}]*}" contained

在像这样的测试案例中,这对我来说表现很好

${VAR} blah ${VAr} ${vAR}

和其他:仅标记包含小写字母的var。仍在调查该区域不正确的原因。

这是我所拥有的:

syn match global_var_match "\${[^}]*[a-z][^}]*}" contained
syn region global_variables start="\(\*\*\*VARS\*\*\*\)\@<=" end="\(\*\*\*OTHERS
\*\*\*\)\@=" contains=global_var_match
hi link global_var_match ErrorMsg