Tại sao các điểm nổi bật tùy chỉnh trong vimrc của tôi bị xóa hoặc đặt lại về mặc định?


10

Tôi muốn làm nổi bật (một phần) trạng thái của tôi với %1*, ví dụ:

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

Tuy nhiên, điều này luôn hiển thị là "trống" (màu thiết bị đầu cuối mặc định):

nhập mô tả hình ảnh ở đây

Nếu tôi gõ :highlight User1, nó sẽ hiển thị User1 xxx clearedvà nếu tôi gõ :highlight User1 ctermbg=0 ctermfg=10 cterm=boldvào cửa sổ lệnh, nó dường như hoạt động.

Làm thế nào tôi có thể đặt điều này trong .vimrctập tin của tôi ?

Tập tin vimrc đầy đủ của tôi, tôi đã sử dụng để thử nghiệm:

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

highlight User1 ctermbg=0 ctermfg=10 cterm=bold

Câu trả lời:


12

Vấn đề là nhiều highlight clearmàu sắc (tất cả?) Sẽ xóa tất cả các điểm nổi bật trước khi thiết lập màu sắc của riêng chúng. Ví dụ từ /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 ...

Điều này cũng xóa các User1..9nhóm (không có nhiều ý nghĩa, IMHO).

Giải pháp là đặt các User1..9điểm nổi bật tùy chỉnh trong ColorSchemeautocmd. Từ :help ColorScheme:

Sau khi tải một bảng màu. :colorschemeCác mô hình được kết hợp với tên màu sắc. <afile>có thể được sử dụng cho tên của tệp thực tế nơi tùy chọn này được đặt và <amatch>cho tên màu sắc mới.

Vì vậy, thay vì sử dụng highlightlệnh "trần" , hãy sử dụng:

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

Nếu bạn thường xuyên chuyển đổi màu sắc, bạn thậm chí có thể sử dụng:

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

để có được màu sắc phù hợp với màu sắc cụ thể.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.