使用多行匹配纠正(和稳定)vim语法highligthing

时间:2018-01-11 22:30:12

标签: vim syntax-highlighting vim-syntax-highlighting

我正在尝试创建一个具有多行匹配的vim语法文件但是如果当多行匹配后当前行出现时vim重绘缓冲区,则会导致语法高亮显示错误。

例如,我希望vim使用此标准(按此顺序)应用以下颜色:

  • 颜色A:如果第一行由2组成,则任意两个相邻行 一个或多个' ='字符

  • 颜色B:如果该行以' - '

  • 开头
  • 颜色C:所有其他行

我尝试过为vim使用以下vim语法命令:

L

但正如我所提到的并且可以从截图中看到,在编辑文件时,有时多行匹配的第二行从颜色A切换到颜色C.这可能可以通过同步选项修复,但我和# 39;为了性能原因,我希望避免从文件开头同步。

截图:

Output expected

Output produced by the code above

1 个答案:

答案 0 :(得分:0)

colorc可以匹配colora匹配的第二行;这种模棱两可导致了问题。

不需要为"所有其他文本定义高亮组&#34 ;;这是Normal突出显示组的用途。试图解决这个问题只是在寻找麻烦。

这个(后备突出显示)可能是文本区域的有效用例。在这种情况下,请将colorc定义为:syntax region(完全包含colora所涵盖的所有行以及任何其他多行匹配),然后添加contains=colorb,colorc。有了它,匹配是明确的,你应该始终看到正确的突出显示,而不是干涉:syntax sync设置。