Ответ 1
Посмотрите AfterColors.vim, это позволит вам использовать метод ~/.vim/after/colors/BusyBee.vim
.
Я часто нахожу, что хочу изменить что-то мало в цветовой схеме, но я не хочу редактировать исходный файл. Я попытался внести изменения в '~/.vim/after/colors/blah.vim', но это не работает для меня.
Например, я хочу изменить выделение CursorLine в BusyBee.vim..
~/.vim/цвета/BusyBee.vim
Я создаю файл '~/.vim/after/colors/BusyBee.vim' и добавляю следующее:
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
Однако я не вижу изменения. Конечно, это работает, если я изменяю строку в исходном BusyBee.vim, но, как я уже сказал, я бы предпочел не делать этого.
Ведение...
:colo Busy<TAB>
Показывает меня...
BusyBee BusyBee
Посмотрите AfterColors.vim, это позволит вам использовать метод ~/.vim/after/colors/BusyBee.vim
.
Ты спросил, что я ищу сегодня. Я нашел более простое решение, чем представленные здесь. Я хочу прозрачный фон вместо черного фона из темы, а просто переопределяя цвет после того, как оператор colorscheme
в .vimrc
не работает и установка плагина просто для этого странная. Вот что я сделал:
autocmd ColorScheme * highlight Normal ctermbg=None
autocmd ColorScheme * highlight NonText ctermbg=None
Почему это работает? Я думаю, что vim что-то делает, кроме как просто прочитал инструкцию colorscheme
и загрузил инструкцию, а затем прочитал инструкцию highlight
и изменил цвет. Во всяком случае, похоже, что vim меняет цветовую схему после чтения конфигурационных файлов. Поэтому я предоставляю крючок, который будет менять цвета каждый раз при изменении цветовой схемы. Хороший побочный эффект, это работает, даже если вы переключаете свою цветовую схему (вы можете сделать блок if
, если хотите).
У меня нет "colorscheme BusyBee" в моем .vimrc. Мне нравится время от времени переключать цветовую схему, поэтому я хочу "исправить" фактическую тему.
Я придумал это решение, а не самое красивое, но что угодно.
function! FixColorscheme() " {{{
echo "fixing colorscheme"
if has("gui_running")
if (g:colors_name =~ "busybee")
hi Folded guibg=#001336 guifg=#003DAD gui=none
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
elseif (g:colors_name =~ "256-jungle")
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
elseif (g:colors_name =~ "xoria256")
hi Folded guibg=#001336 guifg=#003DAD gui=none cterm=none
"hi Folded ctermbg=234 ctermfg=25 cterm=none
endif
elseif &t_Co == 256
if (g:colors_name =~ "busybee")
hi Folded guibg=#001336 guifg=#003DAD gui=none
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
elseif (g:colors_name =~ "256-jungle")
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
elseif (g:colors_name =~ "xoria256")
hi Folded ctermbg=234 ctermfg=25 cterm=none
hi CursorLine cterm=none
"else
"hi CursorLine ctermbg=0 cterm=none
endif
endif
endfunction
" }}}
Запустите его автоматически при изменении цветовой схемы.
augroup mycolorschemes
au!
au ColorScheme * call FixColorscheme()
augroup END
И это помогает загружать вашу любимую схему недели при запуске. (eek!! по умолчанию!)
if iSFirstRun == 1
echo "HI"
colo xoria256
call FixColors()
endif
.. и это на самой вершине .vimrc
"" To let us set some settings only once. {{{
if exists("isRunning")
let isFirstRun = 0
else
let isFirstRun = 1
endif
let isRunning = 1
" }}}
Может быть, уже есть что-то для этого 'isFirstRun'?
Файл запаса synload.vim
в $VIM/vimXX/syntax/synload.vim
выполняет
runtime! syntax/syncolor.vim
Это направляет vim на чтение данного файла в каждом каталоге runtimepath
. В системах RedHat путь выполнения будет выглядеть примерно так:
$HOIME/.vim,/usr/share/vim/vimfiles,/usr/share/vim/vim72,/usr/share/vim/vimfiles/after,$HOME/.vim/after
Поместите настройки цвета как в $HOME/.vim/after/syntax/syncolor.vim
, так и в /usr/share/vim/vimfiles/after/syntax
, и вам будет хорошо идти.
Хотя ваши настройки могут быть простыми директивами hi ...
, это, по-видимому, более сложно. Поэтому я сильно заимствован из файла запасов syncolor.vim
и теперь имеет:
if !exists("syntax_cmd") || syntax_cmd == "on"
" ":syntax on" works like in Vim 5.7: set colors but keep links
command -nargs=* SynColor hi <args>
command -nargs=* SynLink hi link <args>
else
if syntax_cmd == "enable"
" ":syntax enable" keeps any existing colors
command -nargs=* SynColor hi def <args>
command -nargs=* SynLink hi def link <args>
elseif syntax_cmd == "reset"
" ":syntax reset" resets all colors to the default
command -nargs=* SynColor hi <args>
command -nargs=* SynLink hi! link <args>
else
" User defined syncolor file has already set the colors.
finish
endif
endif
" Change comment color from bright cyan to gray
" The bold cyan conflicts with variables and other colors
if &background == "dark"
SynColor Comment term=bold cterm=NONE ctermfg=Gray ctermbg=NONE gui=NONE guifg=#80a0ff guibg=NONE
endif
delcommand SynColor
delcommand SynLink
Положите
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
после
colorscheme BusyBee
в вашем _vimrc.