执行时如何加载不同的配色方案vimdiff
。
我想要这个,因为我当前的颜色方案没有正确显示一些差异vimdiff
,对于。例如,某些差异以相同的 fg/bg 颜色显示。这使得很难理解差异。所以每次我做一个vimdiff
我必须做:colorscheme some_other_scheme
这可以在.vimrc
文件中完成吗?
我不知道为什么 vim 使用这么多颜色来突出显示,它并不能真正帮助您弄清楚发生了什么。
我修改了我的配色方案,只使用一种颜色来突出显示(用另一种颜色来显示一行内的差异),这一切都不同了。
我通过将以下内容添加到我的颜色方案文件 ( ~/.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 使用了不同的颜色方案
如果您vimdiff
从命令行调用,请将以下内容放入您的.vimrc
:
if &diff
colorscheme some_other_scheme
endif
如果您在 vim 中使用 vimdiff,则必须使用(还有一个插件diffthis
)覆盖用于启动/停止它的命令(例如,)或使用自动命令:diffoff
:cnoreabbr
au FilterWritePre * if &diff | colorscheme xyz | endif
FilterWritePre 在通过外部程序(diff 实用程序)进行过滤之前被调用,并且&diff
-option 由 vim 在进入 diff 模式时设置(除其他外,请参阅:help diff
)
我不确定使用哪个自动命令来返回原始颜色方案。
回答我自己的问题:
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
如果您遇到不可读的配色方案(不仅丑陋,而且像粉红色背景上的白色文本一样不可读),一个简单的解决方法可能是使用 16 色而不是 256 色。然后你不必弄乱配色方案。
原因是默认的 vimdiff 配色方案指定DiffChange bg
为“LightMagenta”,它被映射到 256 种颜色的非常浅的粉红色。这对于白色文本是不可读的。有 16 种颜色,“LightMagenta”映射为粗品红色,白色文本显示得更好。
您可以通过执行以下操作进行快速测试:
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
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主题的人,有一个选项可以打开差异模式的高可见性:
" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"
我当前的颜色方案在 vimdiff 中没有正确显示一些差异,对于。例如,某些差异以相同的 fg/bg 颜色显示
实际上,我发现相同 fg/bg 颜色的主要原因是代码语法突出显示和差异颜色方案之间的冲突。您可以尝试更改差异颜色方案,但当您打开不同的文件类型(使用不同的代码语法突出显示)时,它可能是一场打地鼠游戏。
一个可靠的解决方案是禁用 vimdiff 中的语法突出显示。您可以键入:
:syntax off
或者,如果您想每次都自动执行此操作,请将其添加到您的末尾~/.vimrc
:
if &diff
syntax off
endif
另一种方法是修复该配色方案。
据我所知,通常有四个与 diff'ing 相关的高亮组:DiffAdd、DiffChange、DiffDelete 和 DiffText。如果您不想为语法而烦恼或根据自己的喜好调整颜色,您可以将默认配色方案以另一个名称复制到 ~/.vim/colors (如果目录不存在,则创建该目录)和将替代配色方案中的相应 :hi 命令复制粘贴到新自定义配色方案的末尾,可选择注释掉其中的任何其他与差异相关的语句。
如果结果有明显改善,请向配色方案的维护人员发送一封电子邮件,说明您所做的更改,并请他调查问题。他很有可能会感谢您的关注,并且他会修复他的配色方案,以便其他用户也将从中受益。
/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
在 vim 中使用 vimdiff 时,我使用以下内容:
au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif
带有 else 语句的部分很重要,因为这是您在完成 diff 后返回到以前的配置的方式。所以你可以用相应的命令替换syntax off
和。此 autocmd 处理更改设置并在退出 vimdiff 时将其还原(我使用的是精确的)。syntax on
colorscheme
Gdiff
没有一个解决方案对我有用。当我使用检查时,只有在打开差异(来自插件)if &diff
后我为我的配置提供资源时它才有效。它不是自动打开的。此外,在退出差异窗格后,我不得不重新获得我原来的配色方案。因此,我最终创建了可以激活所需配色方案的自定义地图。:Gdiff
fugitive.vim
map ,m :colorscheme molokai<CR>
map ,c :colorscheme PaperColor<CR>
map ,g :colorscheme gruvbox<CR>
到目前为止,这是我发现的最有希望的解决方案,尽管它有点小技巧,如果配色方案自动更改,我会喜欢它。但是,这样一来,无论我是否在差异窗口中,我都可以在闲暇时快速应用任何配色方案。