Vim语法定义的折叠透明颜色

Vim语法定义的折叠透明颜色,vim,fold,vim-syntax-highlighting,Vim,Fold,Vim Syntax Highlighting,我编写了Vim语法突出显示定义代码,还定义了折叠。 现在,我可以使用折叠,但当我有折叠线,我想颜色不同的折叠功能部分和实际代码 +-- 10 lines: XXXXXX 因此,我想保持XXXXXX部分的颜色仍然与原始语法颜色相同,以便从其他行中脱颖而出。 如何定义折叠语法的透明度?不幸的是,这目前是不可能的。有两个高亮显示组控制折叠的视觉表示:Folded(用于整行)和FoldColumn(用于折叠状态的左侧表示)。同样,“透明度”在这里也不适用;折叠文本是缓冲区内容的自定义[izable]

我编写了Vim语法突出显示定义代码,还定义了折叠。 现在,我可以使用折叠,但当我有折叠线,我想颜色不同的折叠功能部分和实际代码

+--  10 lines: XXXXXX
因此,我想保持XXXXXX部分的颜色仍然与原始语法颜色相同,以便从其他行中脱颖而出。
如何定义折叠语法的透明度?

不幸的是,这目前是不可能的。有两个高亮显示组控制折叠的视觉表示:
Folded
(用于整行)和
FoldColumn
(用于折叠状态的左侧表示)。同样,“透明度”在这里也不适用;折叠文本是缓冲区内容的自定义[izable]提取。真正的缓冲区内容被折叠起来,而不是渲染

我隐约记得补丁,允许不同的高光组折叠水平或嵌套折叠,但没有一个已经包括在Vim

你想要实现的目标在视觉上非常吸引人。不过,我认为在实施这一计划时存在以下困难:


常规文件类型语法(您要应用的)必须在
+--10行:
前缀之后匹配。许多语法都有详细的包含或排序,可能无法应用。其他人可能会申请,但(因为折叠的东西),失去了他们的常规上下文,所以下面的行将是混乱的。这可以通过特殊的语法规则来解决(可能只包括语法关键字和简单的
:syn match
)之类的低级内容),但这些都需要每个语法的协作,因此数百个脚本必须由不同的作者进行扩展。

在我发布答案之前,请尝试,如果这就是你要找的:
:嗨!谢谢您的帮助。取消高亮显示折叠线,但不提供原始高亮显示。XXXXXX是折叠线的第一行,展开时有高光。我明白了,我明白我想要的并不简单。在我的例子中,折叠组的第一行的语法是由一行完成的,所以我可能可以离开第一行,只从第二行折叠,所以第一行仍然是彩色的。非常感谢您的详细解释。谢谢!是的,仅从第二行折叠是一种解决方法。然而,我只会在第一行确实是“特殊”并且突出显示非常重要的情况下这样做。否则,如果所有行都构成一个逻辑单元,那么将它们全部折叠仍然是有意义的。