Liste gültiger Farbschemata?

16

Ich habe gerade von dem :colorschemeBefehl erfahren. Kann ich von Vim eine Liste gültiger Farbschemata erhalten? Ich möchte dies von Vim aus tun können, nicht von einer Liste irgendwo im Internet.

Rückgängig machen
quelle

Antworten:

17

Der einfachste Weg ist die Verwendung :help c_Ctrl-dnach :colorscheme.

So :colorschemeCtrl-dwerden die Farbschemata ausgegeben, die Ihnen zur Verfügung stehen.

akshay
quelle
auch an windows gearbeitet!
Isomorphismen
10

Eine andere Möglichkeit, die Liste anzuzeigen, ist by set wildmenu. Damit wird nach :colorscheme+ space+ tabeine Liste der Fertigstellungen angezeigt und kann auch mit den Pfeiltasten oder Ctrl-Nund ausgewählt werden Ctrl-P. Dies gilt nicht nur für Farbschemata, sondern auch für andere Cmdline-Vervollständigungen. Das Verhalten wird beeinflusst wildmodeund besser auf den Standardwert gesetzt full.

tivn
quelle
3

Wenn Sie dies in Vimscript tun möchten, können Sie mithilfe der Funktion getcompletion () eine Liste der Farbschemata abrufen:

let c = getcompletion('', 'color')
echo c

Dies ist etwas einfacher als die vorhandene Vimscript-Antwort, mit der das Dateisystem durchsucht wird.

Sehen Sie :help getcompletion()für weitere Details.

Reich
quelle
2

Die anderen Antworten zeigen die interaktive Art und Weise, zu zeigen, welche Farbschemata verfügbar sind, aber niemand hat eine Möglichkeit erwähnt, eine Liste zu erhalten, die in Vimscript verwendet werden kann. Dies ist eine Anpassung meiner Antwort auf diese Frage .

Diese Lösung verwendet die 'runtimepath'Option, um alle verfügbaren Farbschema-Verzeichnisse abzurufen, und ruft dann eine Liste der Vimscript-Dateien in diesen Verzeichnissen ab, deren Erweiterungen entfernt wurden. Dies ist möglicherweise nicht die sicherste Methode, daher sind Verbesserungen willkommen:

function! GetColorschemes()
    " Get a list of all the runtime directories by taking the value of that
    " option and splitting it using a comma as the separator.
    let rtps = split(&runtimepath, ",")
    " This will be the list of colorschemes that the function returns
    let colorschemes = []

    " Loop through each individual item in the list of runtime paths
    for rtp in rtps
        let colors_dir = rtp . "/colors"
        " Check to see if there is a colorscheme directory in this runtimepath.
        if (isdirectory(colors_dir))
            " Loop through each vimscript file in the colorscheme directory
            for color_scheme in split(glob(colors_dir . "/*.vim"), "\n")
                " Add this file to the colorscheme list with its everything
                " except its name removed.
                call add(colorschemes, fnamemodify(color_scheme, ":t:r"))
            endfor
        endif
    endfor

    " This removes any duplicates and returns the resulting list.
    return uniq(sort(colorschemes))
endfunction

Sie können dann die von dieser Funktion zurückgegebene Liste in vimscript verwenden. Zum Beispiel könnten Sie einfach jedes Farbschema wiederholen:

for c in GetColorschemes() | echo c | endfor

Ich werde hier nicht erklären, was die einzelnen Funktionen oder Befehle tun, aber hier ist eine Liste der Hilfeseiten für alle von mir verwendeten:

  • :help 'runtimepath'
  • :help :let
  • :help :let-&
  • :help split()
  • :help :for
  • :help expr-.
  • :help :if
  • :help isdirectory()
  • :help glob()
  • :help fnamemodify()
  • :help add()
  • :help uniq()
  • :help sort()
Immergrüner Baum
quelle
-1

Sie können dies versuchen

:colorschemeDrücken Sie dann die spaceTaste und dann die tabTaste.

ankur
quelle
3
Beachten Sie, dass es in Ihren hängt wildmenuund wildcharEinstellungen und dass diese Antwort ist im Grunde die gleichen wie tivn ist eine
Statox