2012-12-26 6 views
6

Ich brauche das, um ein Plugin zu beenden, das ich mache, um die Farben der Statuszeile je nach Modus zu ändern.Wie finde ich einen bestimmten Farbwert heraus, den das aktuelle Farbschema für bestimmte Sachen verwendet?

Ich bin jedoch über ein offensichtliches Problem gestolpert, woher soll ich wissen, welches Thema der Benutzer verwendet? Und selbst wenn ich wüsste, dass ich für jedes Thema keine spezifischen Farben machen kann.

So, wie Sie die Vordergrund- und Hintergrundfarben kennen, die das aktuelle Thema für die Statuszeile zum Beispiel verwendet.

EDIT 1:

Falls ich war nicht klar, ich bin nach einer Möglichkeit, die für bestimmte Sachen ctermfg/bg und guifg/bg herauszufinden. Gerade jetzt die Statuszeile. :)

EDIT 2:

Offensichtlich wenn ich :hi StatusLine bekomme ich, was ich brauche, aber ich brauche es zu verfeinern nur den Wert zu erhalten, und nicht alle davon. Ich denke, ich muss einen Regex verwenden, um den Wert herauszufinden. Wenn jemand einen einfacheren Weg kennt, bitte teilen Sie es (oder wenn Sie es bereits mit der Regex herausgefunden haben). Vielen Dank!

Antwort

11

können Sie die synIDattr() Funktion verwenden, um die verschiedenen Attribute abzufragen (wie Vorder- und Hintergrundfarbe) von Syntaxhervorhebung. Um die ID der Highlight-Gruppe zu bestimmen, kann hlID() verwendet werden. Siehe :help hlID():

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

Genau das habe ich gesucht! Vielen Dank! – greduan

1

Sie können den Hintergrund mit

:echo &background 

nach :help background bekommen sollte es eine auch foreground Einstellung sein, aber es für mich nicht funktioniert.

Edit: Es gibt die Variablen guibg, guifg, ctermbg und ctermfg in :hi[glight]

+0

Oh nein, ich habe nicht die Option bedeuten, verwenden entweder einen dunklen/hellen Hintergrund. Aber eher eine Möglichkeit zu wissen, welche Farbe das Thema verwendet. Zum Beispiel, wie man die genaue Farbe kennt, die das Thema für Kommentare verwendet. – greduan

+0

Oh, ich habe die Dokumentation gelesen, auf die Sie hingewiesen haben, und ich denke, das könnte es sein, aber ich bin mir nicht sicher. – greduan

+0

Es könnte möglich sein, die '& fg' und' & bg' zu verwenden, allerdings muss ich einige Tests durchführen, um sicherzugehen. Wenn Sie es herausfinden, sollten Sie es mir unbedingt erzählen. :) – greduan

Verwandte Themen