使用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 (也有一个插件 )或者使用自动命令来覆盖你用来启动/停止它的命令(比如diffthisdiffoff ):

au FilterWritePre * if &diff | colorscheme xyz | endif

FilterWritePre在通过外部程序(diff实用程序)进行过滤之前被调用, &diff -option在进入diff-mode时由vim设置(其中包括:help diff

我不确定使用哪个自动命令返回到原始的colorscheme。

我不知道vim为什么用这么多颜色来突出显示,这并不能真正帮助你弄清楚发生了什么事情。

我修改我的色彩scheme只使用一种颜色来突出显示(用另一种颜色显示在一个线内的差异),它使所有的差异。

之前

在这里输入图像说明

colorscheme_screenshot

我通过添加以下内容到我的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 offsyntax on 。 这个autocmd处理改变一个设置并在退出vimdiff时恢复它(我使用Gdiff是精确的)。