这样做时如何加载不同的colorscheme vimdiff
.
我想要这个,因为我当前的colorscheme没有正确显示一些差异vimdiff
,For.例如,某些差异显示为具有相同的fg/bg颜色.这使得很难理解差异.所以,每次我做vimdiff
我必须做的事情:colorscheme some_other_scheme
这可以在.vimrc
档案中完成吗?
Dea*_*ean 150
我不知道为什么vim会使用这么多颜色来突出显示,它并不能帮助你弄清楚发生了什么.
我修改了我的colorscheme只使用一种颜色来突出显示(用另一种颜色来显示一行中的差异)并且它完全不同.
我通过在colorscheme文件(~/.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
Run Code Online (Sandbox Code Playgroud)
cterm
- 设定风格ctermfg
- 设置文本颜色ctermbg
- 设置突出显示DiffAdd
- 添加了一行DiffDelete
- 线已被删除DiffChange
- 部分线路被更改(突出显示整条线路)DiffText
- 改变的线的确切部分我使用此链接作为颜色编号的参考.
注意:我没有设置gui选项,因为我对macvim/gvim使用了不同的colorscheme
Dat*_*ith 106
如果您是vimdiff
从命令行调用,请将以下内容放入.vimrc
:
if &diff
colorscheme some_other_scheme
endif
Run Code Online (Sandbox Code Playgroud)
如果您使用Vimdiff可以从VIM内,你要么重写你使用启动命令/停止它(例如diffthis
,diffoff
使用):cnoreabbr
(也有一个插件),或使用自动命令:
au FilterWritePre * if &diff | colorscheme xyz | endif
在通过外部程序(diff实用程序)进行过滤之前调用FilterWritePre,并且&diff
当vim进入diff-mode时,-option由vim设置(其中,请参阅参考资料:help diff
)
我不确定使用哪个自动命令返回原始colorscheme.
Cod*_*ain 47
回答我自己的问题:
if &diff
colorscheme evening
endif
Run Code Online (Sandbox Code Playgroud)
Ala*_*son 17
我发现最简单的方法是将这个单行内容粘贴到我的〜/ .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
Run Code Online (Sandbox Code Playgroud)
wis*_*cky 17
如果您遇到难以理解的配色方案(不仅仅是丑陋的,而且像粉红色背景上的白色文字一样难以理解),一个简单的修复可能是使用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
Run Code Online (Sandbox Code Playgroud)
如您所见,16种颜色更易读,不改变配色方案.
要使此永久性,您可以添加set t_Co=16
到您的.vimrc
对于使用非常优秀的Solarized主题的人来说,有一个选项可以打开diff模式的高可见性:
" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"
Run Code Online (Sandbox Code Playgroud)
我当前的颜色方案在 vimdiff 中没有正确显示一些差异,对于。例如一些差异显示为相同的 fg/bg 颜色
实际上,我发现相同 fg/bg 颜色的主要罪魁祸首是代码语法突出显示和差异颜色方案之间的冲突。您可以尝试更改差异颜色方案,但当您打开不同的文件类型(具有不同的代码语法突出显示)时,这可能是一场打地鼠游戏。
一个可靠的解决方案是禁用 vimdiff 中的语法突出显示。您可以键入:
:syntax off
或者,如果您想每次都自动执行此操作,请将其添加到您的末尾~/.vimrc
:
if &diff
syntax off
endif
Run Code Online (Sandbox Code Playgroud)
小智 6
莫洛凯:
的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
Run Code Online (Sandbox Code Playgroud)
将以下代码放入〜/ .vimrc中,您可以选择github或molokai(以“开头的行是注释):
if &diff
" colorscheme github
colorscheme molokai
endif
Run Code Online (Sandbox Code Playgroud)
要在此处扩展 @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
Run Code Online (Sandbox Code Playgroud)
小智 5
另一种方法是修复该配色方案.
据我所知,通常有四个与diff'ing相关的高亮组:DiffAdd,DiffChange,DiffDelete和DiffText.如果您不想对语法或根据自己的喜好调整颜色,可以将您的默认颜色方案复制到另一个名称〜/ .vim/colors(如果目录不存在则创建目录)和复制粘贴相应的:hi命令从您的替代配色方案到新的自定义配色方案的结尾,可以选择性地注释掉其中任何其他与diff相关的语句.
如果结果有明显的改进,请发送电子邮件给您的配色方案的维护者,并要求他调查问题.他很有可能会感谢你的兴趣,并且他会修复他的配色方案,这样其他用户也会受益.
当我在 vim 中使用 vimdiff 时,我使用以下命令:
au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif
Run Code Online (Sandbox Code Playgroud)
else 语句的部分很重要,因为这是完成比较后返回到之前的配置的方式。所以你可以用相应的命令替换syntax off
and 。这个 autocmd 处理更改设置并在退出 vimdiff 时恢复它(我使用的是精确的)。syntax on
colorscheme
Gdiff
归档时间: |
|
查看次数: |
62491 次 |
最近记录: |