Jak sprawdzić, jakiego schematu kolorów używa sesja Vima

107

Możesz ustawić schemat kolorów Vima, wydając

:colorscheme SCHEME_NAME

ale, co dziwne, nie możesz uzyskać aktualnie używanego schematu, wydając

:colorscheme

ponieważ skutkuje to „E471: Argument required ”. Nie widzę też schematu kolorów wymienionego na wyjściu programu :set.

Jak więc dowiedzieć się, jaki jest aktualnie używany schemat kolorów (poza ręcznym przełączaniem motywów, dopóki go nie rozpoznasz)?

gotgenes
źródło

Odpowiedzi:

159

Nie ma żadnego gwarantowanego sposobu (ponieważ schemat kolorów to w zasadzie ładunek poleceń Vima, które są pobierane). Jednak zgodnie z konwencją powinna istnieć zmiennag:colors_name która jest ustawiona na nazwę schematu kolorów.

Dlatego spróbuj tego:

echo g:colors_name

Jeśli dostaniesz E121, jest to albo słabo wykonany schemat kolorów, albo domyślny.

Bardziej błyszczącym sposobem na zrobienie tego jest (dla najnowszych wersji vim):

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

Następnie wykonaj:

:call ShowColourSchemeName()

Jeśli jest napisane „default”, zrób :colorscheme defaulti zobacz, czy kolory się zmieniają. Jeśli tak, używasz zniekształconego schematu kolorów i niewiele możesz z tym zrobić, poza ręcznym przełączaniem motywów, dopóki go nie rozpoznasz.

Zmienna g:colors_namejest udokumentowana tutaj :

:help colorscheme
DrAl
źródło
Czy zamykający cudzysłów jest po "defaultbrakuje?
Benjamin W.
38

Najlepszą opcją jest użycie :cololub :colorschemew aktualnym vimie i pokazany jest rzeczywisty tekst schematu kolorów. Proszę zobaczyć,

:help colorscheme 

po więcej szczegółów.

Tatuaż
źródło
3
Na mnie to nie działa. Mówi default. A schemat kolorów, który otrzymuję, gdy wykonuję :colo default, jest inny.
dzień
4

Jednowierszowa wersja odpowiedzi DrAl:

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

get()Funkcja spadnie z powrotem 'default', jeśli zmienna nie został jeszcze ustalony.

joeytwiddle
źródło