O problema é que muitos esquemas de highlight clearcores (todos?) Limparão todos os destaques antes de definir suas próprias cores. Por exemplo, de /usr/share/vim/vim74/colors/peachpuff.vim:
" First remove all existing highlighting.
set background=light
hi clear
if exists("syntax_on")
syntax reset
endif
let colors_name = "peachpuff"
hi Normal guibg=PeachPuff guifg=Black
hi SpecialKey term=bold ctermfg=4 guifg=Blue
" ... Many more highlights follow ...
Isso também limpa os User1..9grupos (o que não faz muito sentido, IMHO).
A solução é colocar User1..9destaques personalizados no ColorSchemeautocmd. De :help ColorScheme:
Depois de carregar um esquema de cores. :colorschemeO padrão é comparado ao nome do esquema de cores. <afile>pode ser usado para o nome do arquivo real em que essa opção foi definida e <amatch>para o novo nome do esquema de cores.
Portanto, em vez de usar um highlightcomando "bare" , use:
autocmd ColorScheme *
\ highlight User1 ctermbg=0 ctermfg=10 cterm=bold |
\ highlight User2 ctermbg=0 ctermfg=9 cterm=bold
Se você alterna frequentemente os esquemas de cores, pode até usar:
autocmd ColorScheme colorscheme_one_name highlight User1 ctermbg=0 ctermfg=10 cterm=bold
autocmd ColorScheme another_scheme highlight User1 ctermbg=0 ctermfg=11 cterm=bold
para obter cores correspondentes a esquemas de cores específicos.