Чому спеціальні виділення в моєму vimrc видаляються або скидаються до стандартних?


10

Я хотів би виділити (частину) свою статусну лінію %1*, наприклад:

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

Однак це завжди відображається як "порожнє" (кольори терміналів за замовчуванням):

введіть тут опис зображення

Якщо я набираю :highlight User1, це показує User1 xxx cleared, і якщо я набираю :highlight User1 ctermbg=0 ctermfg=10 cterm=boldу вікні команд, це, здається, працює.

Як я можу це помістити у свій .vimrcфайл?

Мій повний файл vimrc, який я використовував для тестування:

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

highlight User1 ctermbg=0 ctermfg=10 cterm=bold

Відповіді:


13

Проблема полягає в тому, що багато (всі?) Кольорові схеми очистять усі основні моменти, highlight clearперш ніж встановлювати свої кольори. Наприклад з /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 ...

Це також очищає User1..9групи (що не має великого сенсу, ІМХО).

Рішення полягає в тому, щоб помістити спеціальні User1..9моменти в ColorSchemeautocmd. Від :help ColorScheme:

Після завантаження кольорової гами. :colorschemeВізерунок узгоджується з назвою схеми кольорів. <afile>може використовуватися для імені фактичного файлу, де встановлено цю опцію, і <amatch>для нового імені схеми кольорів.

Тому замість команди "голою" highlightвикористовуйте:

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

Якщо ви часто перемикаєте кольорові схеми, ви навіть можете використовувати:

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

щоб кольори відповідали певним кольоровим схемам.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.