vim - schemes - Sobrescribir el esquema de color
vim color schemes list (5)
A menudo me encuentro con ganas de cambiar solo algo pequeño en un esquema de colores, pero no quiero editar el archivo original. Intenté poner mi cambio en ''~ / .vim / after / colors / blah.vim'', pero eso no funciona para mí.
Ejemplo, quiero cambiar el resaltado de CursorLine en BusyBee.vim ..
~ / .vim / colors / BusyBee.vim
Creo el archivo ''~ / .vim / after / colors / BusyBee.vim'' y agrego esto:
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
Sin embargo, no veo el cambio. Por supuesto, funciona si cambio la línea en el BusyBee.vim original, pero como dije, preferiría no hacerlo.
Obra...
:colo Busy<TAB>
Me muestra...
BusyBee BusyBee
Eche un vistazo a AfterColors.vim , le permitirá utilizar el método ~/.vim/after/colors/BusyBee.vim
.
El archivo stock synload.vim
en $VIM/vimXX/syntax/synload.vim
hace un
runtime! syntax/syncolor.vim
Esto dirige a vim a leer la especificación de archivo dada en cada directorio de runtimepath
. En los sistemas RedHat, el runtimepath será algo así como:
$HOIME/.vim,/usr/share/vim/vimfiles,/usr/share/vim/vim72,/usr/share/vim/vimfiles/after,$HOME/.vim/after
Ponga sus ajustes de color en $HOME/.vim/after/syntax/syncolor.vim
o en /usr/share/vim/vimfiles/after/syntax
y debería estar listo.
Si bien sus ajustes pueden ser simples hi ...
directivas, aparentemente es más complicado. Así que tomé mucho del archivo stock syncolor.vim
y ahora tengo:
if !exists("syntax_cmd") || syntax_cmd == "on"
" ":syntax on" works like in Vim 5.7: set colors but keep links
command -nargs=* SynColor hi <args>
command -nargs=* SynLink hi link <args>
else
if syntax_cmd == "enable"
" ":syntax enable" keeps any existing colors
command -nargs=* SynColor hi def <args>
command -nargs=* SynLink hi def link <args>
elseif syntax_cmd == "reset"
" ":syntax reset" resets all colors to the default
command -nargs=* SynColor hi <args>
command -nargs=* SynLink hi! link <args>
else
" User defined syncolor file has already set the colors.
finish
endif
endif
" Change comment color from bright cyan to gray
" The bold cyan conflicts with variables and other colors
if &background == "dark"
SynColor Comment term=bold cterm=NONE ctermfg=Gray ctermbg=NONE gui=NONE guifg=#80a0ff guibg=NONE
endif
delcommand SynColor
delcommand SynLink
Me preguntaste qué busco hoy. Encontré una solución más simple que las presentadas aquí. Quiero un fondo transparente en lugar del fondo negro del tema, mientras que simplemente reemplazar el color después de que la declaración .vimrc
en .vimrc
no funcione e instalar un complemento solo para eso es extraño. Aquí esta lo que hice:
autocmd ColorScheme * highlight Normal ctermbg=None
autocmd ColorScheme * highlight NonText ctermbg=None
¿Por qué funciona? Supongo que vim hace algo además de leer la declaración de colorscheme
y cargar la declaración y luego leer la declaración de highlight
y cambiar el color. De todos modos, parece que vim solo cambia el esquema de color después de leer los archivos de configuración. Así que proporciono un gancho, que cambiará los colores cada vez que se cambie la combinación de colores. Un efecto secundario agradable es que esto funciona incluso si cambia su esquema de color (podría hacer un bloque if si lo desea).
No tengo ''colorscheme BusyBee'' en mi .vimrc. Me gusta cambiar de colores de vez en cuando, así que quiero "arreglar" el tema real.
Se me ocurrió esta solución, no la más bonita, sino lo que sea.
function! FixColorscheme() " {{{
echo "fixing colorscheme"
if has("gui_running")
if (g:colors_name =~ "busybee")
hi Folded guibg=#001336 guifg=#003DAD gui=none
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
elseif (g:colors_name =~ "256-jungle")
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
elseif (g:colors_name =~ "xoria256")
hi Folded guibg=#001336 guifg=#003DAD gui=none cterm=none
"hi Folded ctermbg=234 ctermfg=25 cterm=none
endif
elseif &t_Co == 256
if (g:colors_name =~ "busybee")
hi Folded guibg=#001336 guifg=#003DAD gui=none
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
elseif (g:colors_name =~ "256-jungle")
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
elseif (g:colors_name =~ "xoria256")
hi Folded ctermbg=234 ctermfg=25 cterm=none
hi CursorLine cterm=none
"else
"hi CursorLine ctermbg=0 cterm=none
endif
endif
endfunction
" }}}
Ejecutarlo automáticamente al cambiar el esquema de color.
augroup mycolorschemes
au!
au ColorScheme * call FixColorscheme()
augroup END
Y esto ayuda a cargar tu esquema favorito de la semana en el inicio. (eek !! el predeterminado!)
if iSFirstRun == 1
echo "HI"
colo xoria256
call FixColors()
endif
.. y esto en la parte superior de .vimrc
"" To let us set some settings only once. {{{
if exists("isRunning")
let isFirstRun = 0
else
let isFirstRun = 1
endif
let isRunning = 1
" }}}
Tal vez ya hay algo para este ''isFirstRun''?
Poner
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
despues de ti
colorscheme BusyBee
entrada en tu _vimrc.