问题:
重新加载时.vimrc
,一些亮点组被搞砸了。这取决于您拥有的插件以及您使用的配色方案。我注意到有些highlight links
坏了,有些highlight groups
被清除了。
受影响的亮点组
在我的特定设置中,我注意到损坏hi links
或清除groups
:
重新加载后注意受影响的区域:(
重新加载意味着保存修改的文件。:wa
在本例中使用)
解决方案
不幸的是,我尝试过的列出的答案或任何选项组合不会hi
在重新加载后保留或恢复组。重新加载后手动运行可以colorscheme <your-coloscheme>
修复所有问题,但使用Vimscript
它时不会。
希望有人会分享这个烦人的小问题的正确解决方案。
丑陋的黑客
重新加载 vimrc:
在对我的 vim 配置文件进行任何更改时,我都会执行reload.vim
:
.vimrc:
" .....
augroup reload_vimrc " {
autocmd!
autocmd BufWritePost ~/.vim/*.vim,~/.vim/vimrc source ~/.vim/reload.vim
augroup END " }
reload.vim
:恢复断开的链接和清除的组
我们要做的是hi
在采购后恢复组vimrc
。
要找到受影响区域的正确值,例如对于SignColumn
,请键入:
:hi SignColumn
,在发生任何重新加载之前。
结果是(xxx
预览在哪里):
您必须为每个受影响的hi
.
在以下片段中,我最初修复SignColumn
以匹配我的solarized
颜色方案。
然后我修复了一些GitGutter
颜色问题:
例如,GitGutterAdd
链接到GitGutterAddDefault
哪个被保留,但从GitGutterAddDefault
到DiffAdd
被破坏,所以我重新安装那个。依此类推。
重载.vim:
source ~/.vim/vimrc
hi SignColumn ctermfg=12 ctermbg=0 guifg=Cyan guibg=Grey
" GitGutterAdd -> GitGutterAddDefault (preserved)
hi link GitGutterAddDefault DiffAdd
" GitGutterChange -> GitGutterChangeDefault (preserved)
hi GitGutterChangeDefault ctermfg=3 ctermbg=0 guifg=#bbbb00
" GitGutterDelete -> GitGutterDeleteDefault (preserved)
hi GitGutterDeleteDefault ctermfg=1 ctermbg=0 guifg=#ff2222
" GitGutterChangeDelete -> GitGutterChangeDefault (preserved)
" (which we already fixed above)
" Powerline highlight groups
" (see this attached Gist for solution)
一切正常:
这个有点棘手,但原理是一样的。powerline
所有以开头的高亮组Pl_
。但其中一些可能还不存在。例如,如果您还没有进入visual
模式,那么视觉模式的相应组将不会被填充。因此,输入insert
、visual
和normal
模式来填充组,然后复制它们。hl
您可以在命令输出的底部找到它们。然后,将它们粘贴到您的文件中reload.vim
并将它们调整为合法hl
命令。
这听起来像是很多工作,但事实并非如此。这是一个完整的要点reload.vim
,以及一些gifs
指导您完成的要点。