2012-12-26 75 views
6

我需要这个来完成一个插件,我为了改变状态行的颜色取决于模式。如何找出当前colorscheme用于某些特定颜色的某个颜色值?

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

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

编辑1:

在情况下,我并不清楚,我正在寻找一种方法来查找某些东西ctermfg/bgguifg/bg。现在的状态线。 :)

编辑2:

显然,如果我这样做:hi StatusLine我得到了我所需要的,不过,我需要完善它只得到了价值,而不是它的全部。猜猜我将不得不使用一些正则表达式来找出价值。如果有人知道一个更简单的方法,请分享它(或者如果你已经用正则表达式计算出来)。谢谢!

回答

11

可以使用synIDattr()功能来查询各种属性(如前景色和背景色)语法高亮的ctermbgctermfg。要确定突出显示组的ID,可以使用hlID()。见:help hlID()

:echo synIDattr(synIDtrans(hlID('StatusLine')), 'fg') 
+0

这正是我正在寻找的!谢谢! – greduan

1

您可以根据:help background

:echo &background 

拿到后台应该有一个​​设定也一样,但它并没有为我工作。

编辑: 有变量guibgguifg,在:hi[glight]

+0

哦不,我不是说可以选择使用黑暗/浅色背景。而是一种知道主题使用什么颜色的方法。例如,如何知道主题用于评论的确切颜色。 – greduan

+0

哦,我读了你指出的文件,我想这可能是,但我不确定。 – greduan

+0

可能使用'&fg'和'&bg',但我需要运行一些测试来确保。如果你发现肯定要告诉我这件事。 :) – greduan

相关问题