如何找出当前colorscheme用于某些东西的某个颜色值?

gre*_*uan 7 vim vim-plugin statusline

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

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

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

编辑1:

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

编辑2:

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

Ing*_*kat 13

您可以使用该synIDattr()函数查询语法突出显示的各种属性(如前景色和背景色).要确定突出显示组的ID,hlID()可以使用.见:help hlID():

:echo synIDattr(synIDtrans(hlID('StatusLine')), 'fg')
Run Code Online (Sandbox Code Playgroud)