Answers:
如果您是vimdiff
从命令行调用的,则将以下内容放入您的中.vimrc
:
if &diff
colorscheme some_other_scheme
endif
如果您在vim中使用vimdiff,则必须使用(也有一个plugin)覆盖用于启动/停止它的命令(例如diffthis
,),或者使用自动命令:diffoff
:cnoreabbr
au FilterWritePre * if &diff | colorscheme xyz | endif
在通过外部程序(diff实用程序)进行过滤之前,将调用FilterWritePre,并且-m选项&diff
在进入diff-mode时由vim设置-option(另请参见:help diff
)。
我不确定使用哪个自动命令返回到原始颜色方案。
;
shell脚本中的内容,因此您只需添加新的“行”即可:if &diff | colorscheme xyz | cmd2 | cmd3 | endif
colorscheme some_other_scheme
将通过您的运行时路径查找color/some_other_scheme.vim
。您可以:set runtimepath?
在vim中查看运行时路径。
我不知道为什么vim使用这么多颜色来突出显示,它并不能真正帮助您了解发生了什么。
我修改了配色方案,只使用一种颜色来突出显示(另一种颜色来显示一行中存在差异的位置),然后才改变了所有差异。
我是通过将以下内容添加到我的colorscheme文件(~/.vim/colors/mycolorscheme.vim
)的末尾来实现的。
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使用了不同的颜色方案
我发现最简单的方法是将此单行代码粘贴到我的〜/ .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
Todo
而不是MatchParen
因为它更加突出。
如果遇到不可读的配色方案(不仅难看,而且像粉红色背景上的白色文本一样不可读),一个简单的解决方法是使用16种颜色而不是256种颜色。这样,您就不必弄乱配色方案。
原因是默认的vimdiff配色方案指定DiffChange bg
为“ LightMagenta”,它映射为256色非常浅的粉红色。白色文字无法读取。“ LightMagenta”具有16种颜色,映射为粗体洋红色,白色文本显示效果更好。
您可以通过以下操作进行快速测试:
vimdiff <file1> <file2>
:set t_Co? " print current setting (256 by default)
:highlight " print highlighting scheme
:set t_Co=16 " set to 16 colors
:highlight " print highlighting scheme
如您所见,这16种颜色在不更改配色方案的情况下更具可读性。
要使其永久存在,您可以添加set t_Co=16
到.vimrc
t_Co
设置为8,set t_Co=256
极大地提高了可读性。
molokai: github: github和molokai这两个主题同样漂亮。
curl -fLo ~/.vim/colors/molokai.vim --create-dirs https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim
curl -fLo ~/.vim/colors/github.vim --create-dirs https://raw.githubusercontent.com/endel/vim-github-colorscheme/master/colors/github.vim
将以下代码放入〜/ .vimrc中,您可以选择github或molokai(以“开头的行是注释):
if &diff
" colorscheme github
colorscheme molokai
endif
对于使用非常出色的Solarized主题的人,有一个选项可以为diff模式打开高可见性:
" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"
另一种方法是修复该配色方案。
据我所知,通常有四个与差异相关的突出显示组:DiffAdd,DiffChange,DiffDelete和DiffText。如果您不想为语法而烦恼,也可以根据自己的喜好调整颜色,则可以将默认的颜色方案以另一个名称复制到〜/ .vim / colors(如果不存在则创建目录),然后复制将相应的:hi命令从您的替代颜色方案粘贴到新的自定义颜色方案的末尾,有选择地注释掉其中任何其他与diff相关的语句。
如果结果是明显的改善,请向您的配色方案的维护者发送一封电子邮件,其中包含您所做的更改,并请他调查问题。他很有可能会感谢您的关注,并会修复他的配色方案,以便其他用户也将从中受益。
/etc/vim/vimrc
或~/.vimrc
:如果在编辑区域中使用深色背景并突出显示语法,请同时启用此选项set background=dark
要在此处扩展@dean和其他一些答案,请将其添加到您的.vimrc
:
if &diff
" colorscheme evening
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
endif