【发布时间】:2018-06-21 08:39:03
【问题描述】:
我正在尝试创建一个具有多行匹配的 vim 语法文件,但是如果当当前行出现在多行匹配之后时 vim 重绘缓冲区,这会导致不正确的语法突出显示。
例如,我希望 vim 使用此标准(并按此顺序)应用以下颜色:
颜色 A:任意两条相邻线的集合,如果第一条由以下组成 一个或多个“=”字符
颜色 B:如果行以 '-' 开头
颜色 C:所有其他线条
我已经尝试过使用以下 vim 语法命令:
syn clear
syn sync linebreaks=2
syn sync minlines=10
syn sync maxlines=1000
syn match colora '^=\+\n.*' display
syn match colorb '^-.*' display
syn match colorc '^[^=-].*' display
highlight colora ctermfg=DarkRed cterm=bold
highlight colorb ctermfg=DarkGreen cterm=bold
highlight colorc ctermfg=DarkCyan
但正如我提到的并且可以从屏幕截图中看到,在编辑文件时,有时多行匹配的第二行会从颜色 A 切换到颜色 C。这可能可以通过同步选项修复,但我出于性能原因,希望避免从文件开头同步。
截图:
【问题讨论】:
-
有一个vim stackexchange,这个问题可能更适合它。 YMMV。
-
首先,您似乎在图片中混淆了
Color C和Color B。其次,这是没有意义的,Color A主动匹配两个syn match命令,这会导致问题。为什么要匹配任何东西?只需设置文本颜色!
标签: vim syntax-highlighting vim-syntax-highlighting