Vim:从任意行重启语法高亮显示

 Sheen2602906613 发布于 2022-12-12 21:04

我在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可能能够做到我所追求的,但是我不确定它将如何以相反的方式起作用(例如,禁用突出显示而不是应用它).

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有