¿Enumerar esquemas de color válidos?

15

Me acabo de enterar del :colorschemecomando. ¿Hay alguna manera de que pueda obtener una lista de esquemas de color válidos de Vim? Me gustaría poder hacer esto desde Vim, no desde una lista en algún lugar de Internet.

Deshacer
fuente

Respuestas:

17

La forma más fácil es usar :help c_Ctrl-ddespués :colorscheme.

Entonces, :colorschemeCtrl-dgenerará los esquemas de colores que tiene disponibles para usted.

akshay
fuente
trabajó en windows también!
isomorfismos el
10

Otra forma de mostrar la lista es por set wildmenu. Con esto, después de :colorscheme+ space+ tab, se muestra una lista de finalización y también se puede seleccionar con la tecla de flecha o Ctrl-Ny Ctrl-P. Esto no solo funciona en el esquema de colores, sino también en otras terminaciones de cmdline. El comportamiento se ve afectado wildmodey se establece mejor en el valor predeterminado full.

tivn
fuente
3

Si desea hacer esto en Vimscript, puede obtener una Lista de esquemas de color utilizando la función getcompletion ():

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

Esto es un poco más simple que la respuesta Vimscript existente, que escanea el sistema de archivos.

Ver :help getcompletion()para más detalles.

Rico
fuente
2

Las otras respuestas muestran la forma interactiva de mostrar qué esquemas de colores están disponibles, pero nadie ha mencionado una forma de obtener una lista que pueda usarse en vimscript. Esta es una adaptación de mi respuesta a esta pregunta .

Esta solución utiliza la 'runtimepath'opción para obtener todos los directorios de esquema de colores disponibles y luego obtiene una lista de los archivos vimscript en esos directorios con sus extensiones eliminadas. Esta puede no ser la forma más segura de hacerlo, por lo que las mejoras son bienvenidas:

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

Luego puede usar la lista devuelta por esta función en vimscript. Por ejemplo, podría simplemente repetir cada esquema de colores:

for c in GetColorschemes() | echo c | endfor

No explicaré qué hace cada función o comando individual aquí, pero aquí hay una lista de las páginas de ayuda para todas las que utilicé:

  • :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()
Árbol de hoja perenne
fuente
-1

Puedes probar esto

:colorscheme, Luego presione la spacetecla y luego la tabtecla.

ankur
fuente
3
Tenga en cuenta que es que depende de sus wildmenuy wildcharajustes y que esta respuesta es básicamente el mismo que el de una tivn
statox