我在Vim语法高亮中发现了一个有趣的边缘情况.请考虑公司Makefile中的以下代码段:
LDSCRIPT := $(subst ",,$(CONFIG_SYS_LDSCRIPT))
上面的行只是删除给定的双引号LDSCRIPT
.什么都没有语法错误; make按预期运行,没有问题.
问题
由于上面的行只包含一个双引号,因此突出显示规则错误地认为Makefile正文的其余部分是引用文本并将其作为颜色.对于简单的Makefile,这是一个不便之处; 对于1KLOC + Makefile,这变得非常麻烦(特别是因为这个预处理接近文件的顶部).
问题
有没有办法根据匹配某些给定正则表达式的行(例如.subst[ \t]*['"],.*
)或类似的东西禁用语法高亮?如果失败了,有没有办法在保留上面的亮点的同时重启Vim在任意一行的突出显示?
如果可能的话,我想避免编辑Makefile,因为这个脚本在很多部门之间共享.
我愿意写/修改vimscript来达到这个目的,但我之前没有这样做(在任何合理的程度上).任何提示,指示或其他有用的提示将非常感激.
我试过了什么
:syntax sync minlines=1 :syntax sync fromstart :syntax sync clear
在编辑器中运行时,以上所有内容都不会对突出显示产生任何影响.通过Vim帮助文档,似乎:syn-sync-fourth
可能能够做到我所追求的,但是我不确定它将如何以相反的方式起作用(例如,禁用突出显示而不是应用它).