我正在尝试创建一个具有多行匹配的vim语法文件但是如果当多行匹配后当前行出现时vim重绘缓冲区,则会导致语法高亮显示错误。
例如,我希望vim使用此标准(按此顺序)应用以下颜色:
颜色A:如果第一行由2组成,则任意两个相邻行 一个或多个' ='字符
颜色B:如果该行以' - '
颜色C:所有其他行
我尝试过为vim使用以下vim语法命令:
L
但正如我所提到的并且可以从截图中看到,在编辑文件时,有时多行匹配的第二行从颜色A切换到颜色C.这可能可以通过同步选项修复,但我和# 39;为了性能原因,我希望避免从文件开头同步。
截图:
答案 0 :(得分:0)
colorc
可以匹配colora
匹配的第二行;这种模棱两可导致了问题。
不需要为"所有其他文本定义高亮组&#34 ;;这是Normal
突出显示组的用途。试图解决这个问题只是在寻找麻烦。
这个(后备突出显示)可能是文本区域的有效用例。在这种情况下,请将colorc
定义为:syntax region
(完全包含colora
所涵盖的所有行以及任何其他多行匹配),然后添加contains=colorb,colorc
。有了它,匹配是明确的,你应该始终看到正确的突出显示,而不是干涉:syntax sync
设置。