Perché i momenti salienti personalizzati in vimrc vengono cancellati o ripristinati ai valori predefiniti?


10

Vorrei evidenziare (parte di) la mia statusline con %1*, ad esempio:

set statusline=%1*%f%0*
highlight User1 ctermbg=0 ctermfg=10 cterm=bold

Tuttavia, questo appare sempre come "vuoto" (i colori dei terminali predefiniti):

inserisci qui la descrizione dell'immagine

Se scrivo :highlight User1, mostra User1 xxx cleared, e se digito :highlight User1 ctermbg=0 ctermfg=10 cterm=boldnella finestra di comando, sembra funzionare.

Come posso inserirlo nel mio .vimrcfile?

Il mio file vimrc completo che ho usato per i test:

set nocompatible
set background=light
colorscheme default
set laststatus=2
set statusline=%1*%f%0*

highlight User1 ctermbg=0 ctermfg=10 cterm=bold

Risposte:


12

Il problema è che molti highlight clearcolori (tutti?) Elimineranno tutti i punti salienti prima di impostare i propri colori. Ad esempio da /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 ...

Questo cancella anche i User1..9gruppi (il che non ha molto senso, IMHO).

La soluzione è di mettere in User1..9evidenza i punti salienti personalizzati in ColorSchemeautocmd. Da :help ColorScheme:

Dopo aver caricato una combinazione di colori. :colorschemeIl modello è abbinato al nome dello schema dei colori. <afile>può essere utilizzato per il nome del file effettivo in cui è stata impostata questa opzione e <amatch>per il nuovo nome di colorazione.

Quindi, invece di utilizzare un highlightcomando "bare" , utilizzare:

autocmd ColorScheme *
        \ highlight User1 ctermbg=0 ctermfg=10 cterm=bold |
        \ highlight User2 ctermbg=0 ctermfg=9 cterm=bold

Se cambi frequentemente i colori, puoi anche usare:

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

per abbinare i colori a specifici schemi cromatici.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.