Vimrc'imdeki özel vurgular neden siliniyor veya varsayılana sıfırlanıyor?


10

%1*Örneğin (benim durumum ile bir parçası) vurgulamak istiyorum :

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

Ancak, bu her zaman "boş" olarak gösterilir (varsayılan terminal renkleri):

resim açıklamasını buraya girin

Ben yazarsam :highlight User1, gösterir User1 xxx clearedve :highlight User1 ctermbg=0 ctermfg=10 cterm=boldkomut penceresine yazarsam, işe yarıyor gibi görünüyor.

Bunu dosyama nasıl ekleyebilirim .vimrc?

Test için kullandığım tam vimrc dosyam:

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

highlight User1 ctermbg=0 ctermfg=10 cterm=bold

Yanıtlar:


13

Sorun, birçok (hepsi?) Renk kimyasının highlight clearkendi renklerini ayarlamadan önce tüm vurguları temizleyecek olmasıdır . Örneğin /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 ...

Bu aynı zamandaUser1..9 grupları da temizler (bu pek mantıklı değil, IMHO).

Çözüm, autocmd'ye özel User1..9vurgular ColorSchemekoymaktır. Gönderen :help ColorScheme:

Bir renk şemasını yükledikten sonra. :colorschemeDesen, colorscheme adıyla eşleştirilir. <afile>bu seçeneğin ayarlandığı gerçek dosyanın <amatch>adı ve yeni renk şeması adı için kullanılabilir.

Bu yüzden "çıplak" bir highlightkomut kullanmak yerine şunu kullanın:

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

Colorschemes'i sık sık değiştirirseniz, şunları kullanabilirsiniz:

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

renkleri belirli renklerle eşleştirmek için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.