【问题标题】:Vim Syntax ModifyVim 语法修改
【发布时间】:2013-03-14 22:40:29
【问题描述】:

我试图在 vim 中以不同的方式为不同级别的括号着色 - 类似彩虹括号。但是如果不破坏,我就无法做到这一点,例如 css 突出显示。

问题是:css文件中大括号中的任何文本的语法,非常合理地定义为“包含”,例如:

syn keyword cssColor contained aqua
syn region cssDefinition transparent start='{' end='}' contains=cssColor

根据这个定义,如果关键字“aqua”在大括号中,则会突出显示,否则不会突出显示。

现在,当我为大括号定义区域时:

syn region brace1 transparent contains=brace2
syn region brace2 transparent contained contains=brace3
syn region brace3 transparent contained contains=brace1

为了能够对它们进行不同的着色,我打破了 cssDefinition 对 cssColor 的限制。说包含 ALL 显然不起作用。

所以问题是,是否可以编写代码来获取大括号的原始语法组包含的元素,并将它们添加到新定义的语法组中?我知道这对 css 文件没有真正意义,但一般来说。

【问题讨论】:

    标签: syntax vim vim-plugin


    【解决方案1】:

    当您集成到现有的(文件类型)语法中时,您必须考虑其结构;你不能只是把你的定义“放在首位”并希望一切正常。当然,在编写像 彩虹括号这样的通用插件功能时,这很困难。

    我认为您必须将各种“异常”和特殊情况合并到您的插件中,或者转移到可用于突出显示的其他机制,matchadd() / matchdelete() 函数。不幸的是,那里没有:syn region 的自动嵌套功能,所以可能很难实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 2013-11-07
      • 2023-03-06
      相关资源
      最近更新 更多