使用vimdiff时加载不同的colorscheme

Cod*_*ain 124 vim vimdiff

这样做时如何加载不同的colorscheme vimdiff.

我想要这个,因为我当前的colorscheme没有正确显示一些差异vimdiff,For.例如,某些差异显示为具有相同的fg/bg颜色.这使得很难理解差异.所以,每次我做vimdiff我必须做的事情:colorscheme some_other_scheme

这可以在.vimrc档案中完成吗?

Dea*_*ean 150

我不知道为什么vim会使用这么多颜色来突出显示,它并不能帮助你弄清楚发生了什么.

我修改了我的colorscheme只使用一种颜色来突出显示(用另一种颜色来显示一行中的差异)并且它完全不同.

之前

在此输入图像描述

colorscheme_screenshot

我通过在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

  • 谢谢!我将这四行添加到.vimrc并且它有效:) (10认同)
  • 为什么使用数字(ctermbg = 17)颜色不起作用,但使用单词(ctermbg =蓝色)时 - 它有效吗?..解决方案:终端只有8种颜色1-7 (6认同)
  • 谢谢!这看起来好多了! (3认同)
  • 使用iTerm2的MacOS。无论我做什么,我都会得到:无法找到配色方案'〜/ .vim / colors / mycolorscheme'直接在〜/ .vimrc中的“ if&diff”语句之间复制颜色代码就可以了。 (3认同)
  • 就像pabo在另一条评论中所说,你可能需要将你的配色方案文件命名为mycolorscheme.vim,最后加上.vim扩展名. (2认同)

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.

  • 对于控制台用户(比如我自己),我发现“vividchalk”是保持突出显示差异和突出显示语法之间对比度的最佳颜色方案(默认安装集之外),至少对于 shell 脚本而言是如此。紧随其后的是“晚上”。希望有帮助。 (3认同)
  • 管道是换行符的替代品,类似于 shell 脚本中的“;”,因此您只需添加新的“行”:“if &diff | 色彩方案 xyz | cmd2 | cmd3 | 结束` (2认同)
  • `colorscheme some_other_scheme` 将在运行时路径中查找 `color/some_other_scheme.vim`。你可以在 vim 中通过 `:set runtimepath?` 查看你的运行时路径。 (2认同)

Cod*_*ain 47

回答我自己的问题:

if &diff
    colorscheme evening
endif
Run Code Online (Sandbox Code Playgroud)

  • 要在已处于活动 vim 会话中时激活,请执行: `:colorscheme night` (3认同)

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)

  • 好方案!我选择`Todo`而不是'MatchParen`,因为它更突出. (3认同)

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)

256色截图 在此输入图像描述

16色截图 在此输入图像描述

如您所见,16种颜色更易读,不改变配色方案.

要使此永久性,您可以添加set t_Co=16到您的.vimrc

  • 非常感谢这个提示,即使在我的情况下是相反的。`t_Co` 设置为 8,将其增加到 `set t_Co=256` 极大地提高了可读性。 (3认同)

man*_*ake 9

对于使用非常优秀的Solarized主题的人来说,有一个选项可以打开diff模式的高可见性:

" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"
Run Code Online (Sandbox Code Playgroud)

"正常" 在此输入图像描述

"高" 在此输入图像描述

"低" 在此输入图像描述


wis*_*cky 8

我当前的颜色方案在 vimdiff 中没有正确显示一些差异,对于。例如一些差异显示为相同的 fg/bg 颜色

实际上,我发现相同 fg/bg 颜色的主要罪魁祸首是代码语法突出显示和差异颜色方案之间的冲突。您可以尝试更改差异颜色方案,但当您打开不同的文件类型(具有不同的代码语法突出显示)时,这可能是一场打地鼠游戏。

一个可靠的解决方案是禁用 vimdiff 中的语法突出显示。您可以键入:

:syntax off

或者,如果您想每次都自动执行此操作,请将其添加到您的末尾~/.vimrc

if &diff
    syntax off
endif
Run Code Online (Sandbox Code Playgroud)


小智 6

/etc/vim/vimrc~/.vimrc:如果在编辑区域内使用深色背景并且语法高亮显示,则也打开此选项set background=dark


小智 6

莫洛凯: molokai配色方案 的github: 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)


tho*_*iha 6

要在此处扩展 @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相关的语句.

如果结果有明显的改进,请发送电子邮件给您的配色方案的维护者,并要求他调查问题.他很有可能会感谢你的兴趣,并且他会修复他的配色方案,这样其他用户也会受益.


mos*_*ash 5

当我在 vim 中使用 vimdiff 时,我使用以下命令:

au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif
Run Code Online (Sandbox Code Playgroud)

else 语句的部分很重要,因为这是完成比较后返回到之前的配置的方式。所以你可以用相应的命令替换syntax offand 。这个 autocmd 处理更改设置并在退出 vimdiff 时恢复它(我使用的是精确的)。syntax oncolorschemeGdiff