【发布时间】:2015-01-01 23:48:56
【问题描述】:
我在 Vim 语法高亮中发现了一个有趣的边缘案例。考虑来自公司 Makefile 的以下 sn-p:
LDSCRIPT := $(subst ",,$(CONFIG_SYS_LDSCRIPT))
上面的行只是从给定的LDSCRIPT 中删除双引号。语法上没有错; make 按预期运行,没有问题。
问题
由于上面的行只包含一个双引号,高亮规则错误地认为 Makefile 的其余部分是带引号的文本并对其进行着色。对于简单的 Makefile,这是一个不便;对于 1KLOC+ Makefiles,这真的很麻烦(特别是因为这个预处理在文件顶部附近)。
问题
有什么方法可以禁用基于与某些给定正则表达式匹配的行(例如subst[ \t]*['"],.*)或类似内容的语法突出显示?如果做不到这一点,有没有办法在保留上面的高亮显示的同时在任意行重新启动 Vim 的高亮显示?
如果可能的话,我希望避免对 Makefile 进行编辑,因为该脚本在多个部门之间共享。
我愿意编写/修改 vimscript 来实现这一点,但是我以前没有这样做过(在任何合理的程度上)。任何提示、指针或其他有用的提示将不胜感激。
我的尝试
:syntax sync minlines=1
:syntax sync fromstart
:syntax sync clear
在编辑器中运行时,上述所有操作似乎都不会对突出显示产生任何影响。查看 Vim 帮助文档,:syn-sync-fourth 似乎可以做我所追求的,但是我不确定这将如何以相反的方式起作用(例如,禁用突出显示而不是应用它)。
【问题讨论】:
-
搜搜搜,终于,你帮了我老大:)
标签: vim makefile syntax-highlighting