Énumérer les schémas de couleurs valides?


15

Je viens de découvrir la :colorschemecommande. Existe-t-il un moyen d'obtenir une liste de combinaisons de couleurs valides auprès de Vim? J'aimerais pouvoir le faire à partir de Vim, pas à partir d'une liste quelque part sur Internet.

Réponses:


17

La façon la plus simple est d'utiliser :help c_Ctrl-daprès :colorscheme.

Ainsi, :colorschemeCtrl-dsortira les schémas de couleurs dont vous disposez.


travaillé sur les fenêtres aussi!
isomorphismes

10

Une autre façon d'afficher la liste est par set wildmenu. Avec cela, après :colorscheme+ space+ tab, une liste d'achèvement est affichée et également sélectionnable avec la touche fléchée ou Ctrl-Net Ctrl-P. Ce n'est pas seulement un travail sur le schéma de couleurs, mais aussi sur d'autres compléments de cmdline. Le comportement est affecté wildmodeet mieux défini sur la valeur par défaut full.


3

Si vous souhaitez le faire dans Vimscript, vous pouvez obtenir une liste de schémas de couleurs en utilisant la fonction getcompletion ():

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

C'est un peu plus simple que la réponse Vimscript existante, qui analyse le système de fichiers.

Voir :help getcompletion()pour plus de détails.


2

Les autres réponses montrent la manière interactive de montrer quels schémas de couleurs sont disponibles, mais personne n'a mentionné un moyen d'obtenir une liste qui peut être utilisée dans vimscript. Ceci est une adaptation de ma réponse à cette question .

Cette solution utilise l' 'runtimepath'option pour obtenir tous les répertoires de codes de couleurs disponibles, puis récupère une liste des fichiers vimscript dans ces répertoires avec leurs extensions supprimées. Ce n'est peut-être pas le moyen le plus sûr de le faire, les améliorations sont donc les bienvenues:

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

Vous pouvez ensuite utiliser la liste renvoyée par cette fonction dans vimscript. Par exemple, vous pouvez simplement faire écho à chaque schéma de couleurs:

for c in GetColorschemes() | echo c | endfor

Je ne vais pas expliquer ce que fait chaque fonction ou commande individuelle ici, mais voici une liste des pages d'aide pour toutes celles que j'ai utilisées:

  • :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()

-1

Vous pouvez essayer ceci

:colorscheme, Appuyez ensuite sur la spacetouche puis sur la tabtouche.


3
Notez que est cela dépend de vos wildmenuet wildcharparamètres et que cette réponse est essentiellement le même que celui de tivn
Statox
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.