使用vimdiff时加载不同的colorscheme
在做vimdiff
时候如何加载不同的colorscheme。
我想这是因为我目前的colorcheme不会在vimdiff
,For中显示一些差异。 例如,某些差异以相同的fg / bg颜色显示。 这使得很难理解差异。 所以每次我做一个vimdiff
我必须做的:colorscheme some_other_scheme
这可以在.vimrc
文件中完成吗?
如果您从命令行调用vimdiff
,请将以下内容放在.vimrc
:
if &diff colorscheme some_other_scheme endif
如果你在vim中使用vimdiff,你可以使用:cnoreabbr
(也有一个插件 )或者使用自动命令来覆盖你用来启动/停止它的命令(比如diffthis
, diffoff
):
au FilterWritePre * if &diff | colorscheme xyz | endif
FilterWritePre在通过外部程序(diff实用程序)进行过滤之前被调用, &diff
-option在进入diff-mode时由vim设置(其中包括:help diff
)
我不确定使用哪个自动命令返回到原始的colorscheme。
我不知道vim为什么用这么多颜色来突出显示,这并不能真正帮助你弄清楚发生了什么事情。
我修改我的色彩scheme只使用一种颜色来突出显示(用另一种颜色显示在一个线内的差异),它使所有的差异。
之前
后
我通过添加以下内容到我的colorscheme文件( ~/.vim/colors/mycolorsheme
)的~/.vim/colors/mycolorsheme
。
highlight DiffAdd cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red highlight DiffDelete cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red highlight DiffChange cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red highlight DiffText cterm=bold ctermfg=10 ctermbg=88 gui=none guifg=bg guibg=Red
-
cterm
– 设置样式 -
ctermfg
– 设置文本颜色 -
ctermbg
– 设置突出显示 -
DiffAdd
– 行被添加 -
DiffDelete
– 行被删除 -
DiffChange
– 线条的一部分被改变(突出整个线条) -
DiffText
– 已更改行的确切部分
我用这个链接作为颜色编号的参考。
注:我没有设置gui选项,因为我使用macvim / gvim的不同colorscheme
回答我自己的问题:
if &diff colorscheme evening endif
我发现最简单的方法是将这一行内容粘贴到我的〜/ .vimrc文件中:
" Fix the difficult-to-read default setting for diff text highlighting. The " bang (!) is required since we are overwriting the DiffText setting. The highlighting " for "Todo" also looks nice (yellow) if you don't like the "MatchParen" colors. highlight! link DiffText MatchParen
如果您遇到不可读的配色scheme(不仅难看,而且像粉红色背景上的白色文字不可读),则可以使用16色的术语而不是256色。 那么你不必乱搞配色scheme。
原因是默认的vimdiff颜色scheme将DiffChange bg
指定为“LightMagenta”,它被映射为256色的非常浅的粉红色。 白色文字无法阅读。 用16色的术语,“LightMagenta”被映射成一个大胆的洋红色,白色文字显示出来更好。
你可以通过做这样的事情来进行快速testing:
echo $TERM # xterm-256color export TERM=xterm-16color vimdiff <file1> <file2> :highlight
xterm-256color截图
xterm-16color截图
正如你所看到的,xterm-16color更可读,不改变颜色scheme。
对于使用非常优秀的Solarized主题的用户,有一个选项可以打开diff模式的高可视性:
" ~/vim.rc " Set high visibility for diff mode let g:solarized_diffmode="high"
“正常”
“高”
“低”
另一种方法是修复该配色scheme。
据我所知,通常有四个高亮组相对于区分:DiffAdd,DiffChange,DiffDelete和DiffText。 如果你不想被麻烦或者根据自己的喜好调整颜色,你可以用另一个名字来复制你的默认颜色scheme到〜/ .vim / colors(如果它不存在,就创build目录)和从相应的颜色scheme复制粘贴相应的:hi命令到新的自定义颜色scheme的结尾,可选地注释掉其中任何其他与diff相关的语句。
如果结果是一个明显的改进,请发送一封电子邮件给您的配色scheme的维护人员,并要求他调查问题。 他很有可能会感谢你的兴趣,并会修正他的配色scheme,以便其他用户也能受益。
/etc/vim/vimrc
或~/.vimrc
:如果在编辑区域内使用黑色背景,并使用语法高亮,请打开此选项以及set background=dark
在vim中使用vimdiff时,我使用以下命令:
au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif
带有else语句的部分很重要,因为在完成diff'ing之后,这就是您如何返回到以前的configuration。 所以你可以使用各自的colorscheme
命令来replacesyntax off
和syntax on
。 这个autocmd处理改变一个设置并在退出vimdiff时恢复它(我使用Gdiff
是精确的)。