我对vim的语法组优先行为感到困惑。似乎为区域开始/结束匹配添加偏移会改变组的优先级:
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
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?
syn region t2 start='AAA'ms=e+1 end='BBB'
AAA this is a test BBB # matches t2, as expected
无论是否将偏移量添加到开始/结束模式,区域t1
和t2
都与文本匹配。根据Vim的语法组优先级规则,t2
应优先于试验1和试验2中的t1
,因为它稍后定义。但是t1
在试验2中具有优先权,其中添加了起始匹配偏移。所以似乎在开始/结束模式中添加偏移量会以某种方式将组移动到优先级层次结构的后面?
即使我添加了一个起始匹配偏移量,如何使t2
取代t1?
注意:这个例子是设计的 - 我的用例试图在YAML文件中的某些键下包含不同的语法,并且我在覆盖我的区域的YAML语法组时遇到问题