Cómo saber qué esquema de color usa actualmente una sesión de Vim


Puede establecer el esquema de color Vim emitiendo

:colorscheme SCHEME_NAME

Pero, por extraño que parezca, no se puede obtener el esquema utilizado actualmente mediante la emisión de

:colorscheme

Ya que esto resulta en " E471: Argument required". Tampoco veo el esquema de color listado en la salida de :set.

Entonces, ¿cómo averiguar el esquema de color actual en uso (aparte de cambiar manualmente los temas hasta que lo reconozca)?

Author: gotgenes, 2010-03-10

3 answers

No hay forma garantizada (ya que un esquema de color es esencialmente una carga de comandos vim que se obtienen). Sin embargo, por convención debe haber una variable g:colors_name que se establezca en el nombre de la combinación de colores.

Por lo tanto, prueba esto:

echo g:colors_name

Si obtienes E121, es un esquema de color mal hecho o es el predeterminado.

Una forma más brillante de hacer esto es (para versiones recientes de vim):

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

Entonces haz:

:call ShowColourSchemeName()

Si dice "default", haga :colorscheme default y a ver si cambian los colores. Si lo hacen, estás usando un esquema de color mal formado y no hay mucho que puedas hacer al respecto aparte de cambiar manualmente los temas hasta que lo reconozcas.

La variable g:colors_name está documentada aquí :

:help colorscheme
 130
Author: DrAl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-10 19:00:28

La mejor opción es usar :colo o :colorscheme en el vim actual y se muestra el texto del esquema de color real. Véase,

:help colorscheme 

Para más detalles.

 32
Author: Gattoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-07 14:22:56

Una versión de una línea de la respuesta de DrAl:

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

La función get() volverá a 'default' si la variable aún no se ha establecido.

 0
Author: joeytwiddle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-11 08:40:11