如何在Vim中使用区域偏移维护语法组优先级

时间:2014-12-23 01:55:08

标签: vim

我对vim的语法组优先行为感到困惑。似乎为区域开始/结束匹配添加偏移会改变组的优先级:

试验1

语法文件

syn region t1 start='AAA' end='BBB'
syn region t2 start='AAA' end='BBB'

测试文本

AAA this is a test BBB  # in group t2, as expected by precedence

试验2

语法文件

syn region t1 start='AAA' end='BBB'
syn region t2 start='AAA'ms=e+1 end='BBB'

测试文本

AAA this is a test BBB  # now in group t1-- why?

试验3

语法文件

syn region t2 start='AAA'ms=e+1 end='BBB'

测试文本

AAA this is a test BBB  # matches t2, as expected

无论是否将偏移量添加到开始/结束模式,区域t1t2都与文本匹配。根据Vim的语法组优先级规则,t2应优先于试验1和试验2中的t1,因为它稍后定义。但是t1在试验2中具有优先权,其中添加了起始匹配偏移。所以似乎在开始/结束模式中添加偏移量会以某种方式将组移动到优先级层次结构的后面?

即使我添加了一个起始匹配偏移量,如何使t2取代t1?

注意:这个例子是设计的 - 我的用例试图在YAML文件中的某些键下包含不同的语法,并且我在覆盖我的区域的YAML语法组时遇到问题

0 个答案:

没有答案