Elencare combinazioni di colori valide?


15

Ho appena scoperto il :colorschemecomando. C'è un modo per ottenere un elenco di combinazioni di colori valide da Vim? Mi piacerebbe poterlo fare da Vim, non da un elenco da qualche parte su Internet.

Risposte:



10

Un altro modo per mostrare l'elenco è di set wildmenu. Con questo, dopo :colorscheme+ space+ tab, viene visualizzato un elenco di completamento, selezionabile anche con il tasto freccia oe Ctrl-Ne Ctrl-P. Questo non è solo un lavoro sui colori, ma anche sul completamento di altri cmdline. Il comportamento è influenzato wildmodee impostato meglio sul valore predefinito full.


3

Se vuoi farlo in Vimscript, puoi ottenere un Elenco di combinazioni di colori usando la funzione getcompletion ():

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

Questo è un po 'più semplice della risposta Vimscript esistente, che esegue la scansione del filesystem.

Vedi :help getcompletion()per maggiori dettagli.


2

Le altre risposte mostrano il modo interattivo di mostrare quali colori sono disponibili, ma nessuno ha menzionato un modo per ottenere un elenco che può essere usato in vimscript. Questo è un adattamento della mia risposta a questa domanda .

Questa soluzione utilizza l' 'runtimepath'opzione per ottenere tutte le directory dei colori disponibili, quindi recupera un elenco dei file vimscript in quelle directory con le loro estensioni rimosse. Questo potrebbe non essere il modo più sicuro per farlo, quindi i miglioramenti sono i benvenuti:

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

È quindi possibile utilizzare l'elenco dei ladri restituito da questa funzione in vimscript. Ad esempio, potresti semplicemente fare eco a ogni schema di colori:

for c in GetColorschemes() | echo c | endfor

Non spiegherò cosa fa ogni singola funzione o comando qui, ma ecco un elenco delle pagine di aiuto per tutte quelle che ho usato:

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

Puoi provare questo

:colorscheme, Quindi premere il spacetasto e quindi il tabtasto.


3
Nota che dipende da te wildmenue dalle wildcharimpostazioni e che questa risposta è sostanzialmente la stessa di quella di
tivn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.