No puse color xxx
en mi .vimrc
. Así que veo esto cuando abro mi .vimrc
.
Entonces escribo :color darcula
. Y cambia a esto.
:color
me da darcula
aquí (naturalmente)
Entonces escribo :set background=dark
. Y cambia a esto.
:color
me da default
aquí (asombrosamente)
Entonces mi pregunta es, ¿qué hace exactamente :set background=dark
?
Lo intenté :h background
y no encontré nada útil. Entiendo que este comando en realidad no cambia el fondo, solo vim cambiará los colores en consecuencia. Pero todavía quiero hacer esta pregunta. Porque yo estoy muy contento con el color después :color darcula
y :set background=dark
lo que me pregunto cómo escribir mi propio esquema de color sin tener que poner set background=dark
en mi .vimrc
.
Seguí el consejo de @statox y lo puse set background=dark
en la última línea de mi darcula.vim
. Luego color darcula
me da la tercera captura de pantalla. Sin embargo, cuando lo puse en la primera línea, color darcula
me da la segunda captura de pantalla. También lo set bg=dark
cambia a la tercera captura de pantalla.
Supuse que al ponerlo en la primera línea, le digo a Vim que este esquema de colores está diseñado para un fondo oscuro. Al ponerlo en la última línea, en el contraste, dejo que supongo que este esquema de colores está diseñado para un fondo claro y luego hago que cambie un poco por sí mismo (cuando procesa la última línea).
Si lo que supongo que sucedió es cierto, mi pregunta sigue sin respuesta. ¿Qué cambió exactamente vim cuando uso set bg=dark
DESPUÉS de que ha cargado un esquema de colores claros?
Toda mi configuración de vim está disponible en https://github.com/MichaelMa2014/.vim
fuente
:set bg=light
y:set bg=dark
no son opuestos, pero no se explica qué son exactamente. También esa publicación es la razón por la que quiero evitar:set background=dark
en mi.vimrc
.Respuestas:
Que pasa cuando tu
:set background
El mecanismo básico por el cual
:set background
funciona es en realidad bastante simple, y está documentado (aunque no de forma particularmente clara) en:help 'background'
.Entonces, lo que realmente sucede cuando
'background'
se cambia la opción es esto:Si no hay una combinación de colores cargada actualmente
Vim vuelve a cargar los colores predeterminados, utilizando colores de primer plano que se consideran apropiados para la nueva configuración de
'background'
Si un esquema de color está cargado actualmente
Vim vuelve a cargar el esquema de color. Cuando se carga el esquema de color, el esquema de color establece los colores apropiados para la nueva configuración
'background'
o el esquema de color se restablece'background'
al valor anterior.Como ya ha descrito, la
'background'
opción no pretende establecer el fondo, sino informar a Vim si el fondo es oscuro o claro.Entonces, si el esquema de color se restablece
'background'
, Vim entiende que el esquema de color simplemente no admite la nueva configuración de'background'
. Dado que el usuario ha indicado que está utilizando dicho fondo, esto significa que el esquema de color actual ya no es apropiado, por lo que Vim desactivag:colors_name
y luego vuelve a cargar los colores predeterminados.Si desea explorar el código real que se ejecuta cuando
'background'
está configurado, puede comenzar aquí .¿Qué está pasando en tu instalación?
El comportamiento extraño que describe (en la primera versión de su pregunta) puede explicarse mediante esta línea en la documentación citada anteriormente:
El problema es que su
colors/darcula.vim
archivo no establece este valor, por lo que a pesar de que los colores cambiaron cuando lo invocó:color darcula
, Vim no considera que se cargue un esquema de color actualmente.Por lo tanto, cuando llame a
:set background=dark
Vim, lleve a cabo el paso de la sección anterior "Si no hay una combinación de colores cargada actualmente" y establece los colores predeterminados para un fondo oscuro. Esto explica por qué:color
luego informadefault
.(Tenga en cuenta, sin embargo, que la configuración de los colores predeterminados no elimina , como es de esperar, todos los colores que se habían configurado previamente, y es por eso que termina con los resultados que ve, en lugar de los colores que se muestran cuando iniciar Vim en primer lugar. Aquí hay una discusión sobre este tema )
En resumen, su esquema de color está mal configurado: consulte
:edit $VIMRUNTIME/colors/README.txt
(en particular la sección en la parte inferior) para obtener más detalles sobre esto y sobre la interacción entre'background'
los esquemas de color.fuente
El documento de at
:h 'background'
debe proporcionar toda la información que necesita:Su esquema de colores define 2 grupos de colores: los que se usan en un fondo claro y los que se usan en un fondo oscuro. La
background
opción le dirá a vim qué grupo de colores definido por su esquema de colores debe usarse.Ese es el seguimiento del párrafo anterior: es el esquema de colores que define los grupos de colores y
background
selecciona uno de estos grupos.Finalmente, si desea escribir su propio esquema de colores sin tener que poner
set background=dark
su vimrc, recuerde que un esquema de colores no es más que un programa en vimscript, por lo que nada le impide usar el comando directamente en el código de su esquema de colores como, por ejemplo, jellybeans o aprendizfuente
set background=dark
endarcula.vim
y produjo el mismo efecto que cuando lo pongo en.vimrc
. Pero todavía tengo curiosidad, ¿cómo exactamente Vim "trata de usar colores que se vean bien en un fondo oscuro"? ¿Hay un mapeo o algo así definido en alguna parte?