Wie Sie feststellen können, welches Farbschema eine Vim-Sitzung derzeit verwendet

107

Sie können das Vim-Farbschema durch Ausgabe festlegen

:colorscheme SCHEME_NAME

Seltsamerweise können Sie das aktuell verwendete Schema jedoch nicht durch Ausgabe erhalten

:colorscheme

da dies zu " E471: Argument required" führt. Ich sehe auch nicht das Farbschema, das in der Ausgabe von aufgeführt ist :set.

Wie können Sie das aktuell verwendete Farbschema herausfinden (außer das manuelle Wechseln der Themen, bis Sie es erkennen)?

gotgenes
quelle

Antworten:

158

Es gibt keinen garantierten Weg (da ein Farbschema im Wesentlichen eine Menge von vim-Befehlen ist, die bezogen werden). Konventionell sollte es jedoch eine Variable geben g:colors_name, die auf den Namen des Farbschemas festgelegt ist.

Versuchen Sie daher Folgendes:

echo g:colors_name

Wenn Sie E121 erhalten, handelt es sich entweder um ein schlecht erstelltes Farbschema oder um das Standardfarbschema.

Eine glänzendere Methode hierfür ist (für neuere Versionen von vim):

function! ShowColourSchemeName()
    try
        echo g:colors_name
    catch /^Vim:E121/
        echo "default
    endtry
endfunction

Dann mach:

:call ShowColourSchemeName()

Wenn "Standard" angezeigt wird, überprüfen :colorscheme defaultSie, ob sich die Farben ändern. Wenn dies der Fall ist, verwenden Sie ein fehlerhaftes Farbschema, und Sie können nicht viel dagegen tun, außer die Themen manuell zu wechseln, bis Sie es erkennen.

Die Variable g:colors_nameist hier dokumentiert :

:help colorscheme
DrAl
quelle
Fehlt das abschließende doppelte Anführungszeichen "default?
Benjamin W.
38

Die beste Option ist die Verwendung von :colooder :colorschemein der aktuellen Version, und der tatsächliche Farbschematext wird angezeigt. Bitte sehen Sie,

:help colorscheme 

für mehr Details.

Tätowierung
quelle
3
Es funktioniert nicht bei mir. Es heißt default. Und das Farbschema, das ich bekomme, wenn ich es ausführe :colo default, ist ein anderes.
daVe
4

Eine einzeilige Version von DrAls Antwort:

let current_scheme = get(g:, 'colors_name', 'default')

Die get()Funktion greift auf zurück, 'default'wenn die Variable noch nicht gesetzt wurde.

joeytwiddle
quelle