我经常发现自己想要在colorscheme中改变一些东西,但我不想编辑原始文件。我尝试将我的更改放在'〜/ .vim / after / colors / blah.vim'中,但这对我不起作用。
示例,我想更改BusyBee.vim中的CursorLine高亮显示..
〜/的.vim /颜色/ BusyBee.vim
我创建文件'〜/ .vim / after / colors / BusyBee.vim'并添加:
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
然而,我没有看到变化。当然,如果我更改原始BusyBee.vim中的行,它会起作用,但就像我说我不想那样做。
...做
:colo Busy<TAB>
告诉我......
BusyBee BusyBee
答案 0 :(得分:40)
你问我今天要找什么。我找到了比这里介绍的更简单的解决方案。我想要透明背景而不是主题中的黑色背景,而在colorscheme
中的.vimrc
语句之后简单地覆盖颜色不起作用并且为此安装插件很奇怪。这是我做的:
autocmd ColorScheme * highlight Normal ctermbg=None
autocmd ColorScheme * highlight NonText ctermbg=None
为什么会这样?我想vim除了阅读你的colorscheme
语句并加载语句然后阅读你的highlight
语句并更改颜色之外还会做一些事情。无论如何,似乎vim只在读取配置文件后才改变配色方案。所以我提供了一个钩子,每次改变颜色方案时都会改变颜色。一个很好的副作用是,即使你切换你的配色方案也可以这样做(如果你愿意,你可以做一个if
块。)
答案 1 :(得分:7)
查看AfterColors.vim,您可以使用~/.vim/after/colors/BusyBee.vim
方法。
答案 2 :(得分:4)
我的.vimrc中没有'colorscheme BusyBee'。我喜欢偶尔切换colorscheme,所以我想“修复”实际的主题。
我提出了这个解决方案,不是最漂亮的,而是其他的。
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'的东西?
答案 3 :(得分:1)
为后代引用 Vim 8.2 的帮助,因为这是我第一次搜索此场景:
To customize a color scheme use another name, e.g. ~/.vim/colors/mine.vim",
and use :runtime to load original color scheme:
colors/evening.vim
Statement ctermfg=Blue guifg=Blue
答案 4 :(得分:0)
synload.vim
中的库存$VIM/vimXX/syntax/synload.vim
文件
runtime! syntax/syncolor.vim
这指示vim读取runtimepath
的每个目录中的给定filespec。在RedHat系统上,runtimepath将类似于:
$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
答案 5 :(得分:-3)
放
hi CursorLine guibg=#000000 ctermbg=Black cterm=none
之后
colorscheme BusyBee
在_vimrc中输入。