vim - vim 语法 - 如何突出显示区域内的匹配项
问题描述
我正在编写一个 vim 语法高亮脚本来确定全局参数是否仅为大写。如果不是 - 我想强调它。问题是全局参数位于页面的特定部分。
代码看起来像这样:
***VARS***
${VAR1}
${var2}
***OTHERS***
${var3}
所以我希望突出显示VARS下包含小写的所有变量 - 在我的示例中,只有 ${var2} 应该突出显示。
我试图这样做:
syn match global_var_match "\${.*[a-z][^}]+}" contained
syn region global_variables start="\(\*\*\*VARS\*\*\*\)\@<=" end="\(\*\*\* OTHERS\*\*\*\)\@=" contains=global_var_match
hi link global_variables ErrorMsg
但随后也突出显示了 ${VAR1} 和 ${var2}。
解决方案
一个问题是简单的错字:
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}
和其他:仅标记包含小写的变量。仍在调查为什么该地区不正确。
这是我所拥有的:
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
推荐阅读
- python - 将图例添加到具有二进制数据的 numpy 数组的 matplotlib 图中
- javascript - 在 util.promisify 请求迭代失败后继续 .map 循环(异步等待)
- c# - 如何使用c#杀死除特定进程之外的所有进程
- reactjs - 使用 Jest 或 Mocha 进行测试时导入反应模块时出错
- javascript - Javascript - 将 API 调用中的数据存储到对象中
- apache-spark - 在 Spark SQL 中优化 Theta 连接
- flutter - 行中的颤振图标“右溢出 X 像素”
- html - 如何为最小值/最大值正确设置 Angular2 模板驱动的表单验证?
- r - 在 dplyr 管道中应用函数
- ruby - 方形宝石加载问题