9

我需要这个来完成我正在制作的插件,以便根据模式更改状态行的颜色。

但是我遇到了一个明显的问题,我怎么知道用户正在使用什么主题?即使我知道我不能为每个主题制作特定的颜色。

因此,例如,如何知道当前主题用于状态行的前景色和背景色。

编辑1:

如果我不清楚,我正在寻找一种方法来找出某些东西的ctermfg/bgguifg/ bg。现在是状态栏。:)

编辑2:

显然,如果我这样做:hi StatusLine了,我会得到我需要的东西,但是我需要对其进行改进以仅获得价值,而不是全部。猜猜我将不得不使用一些正则表达式来找出价值。如果有人知道更简单的方法,请分享它(或者如果你已经用正则表达式弄清楚了)。谢谢!

4

2 回答 2

14

您可以使用该synIDattr()函数查询语法高亮的各种属性(如前景色和背景色)。确定高亮组的ID,hlID()可以使用。见:help hlID()

:echo synIDattr(synIDtrans(hlID('StatusLine')), 'fg')
于 2012-12-27T00:42:32.370 回答
1

你可以得到背景

:echo &background

根据:help background也应该有一个foreground设置,但它对我不起作用。

编辑: 有变量guibg,guifgctermbginctermfg:hi[glight]

于 2012-12-26T20:26:49.533 回答