在两个系统上Vim不同的DiffAdd

4xy9mtcn  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(134)

我有两个Vim-s版本,具有相同的vimrc:
带PuTTY的Linux:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar  7 2020 14:11:31)
Included patches: 1-2367
Huge version without GUI.

薄荷糖:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug  7 2016 16:06:24)
Included patches: 1-2181
Huge version without GUI.

两者都有:colorscheme作为default,和background=dark
但是:hi对于Linux来说:DiffAdd ... term=bold ctermbg=4,对于天鹅座:DiffAdd ... term=bold ctermbg=1ctermbg中的差异。可能不仅仅是这些。
我找不到 default 方案集在哪里(没有$VIMRUNTIME/colors/default.vim)。我没有在其他 vimrc 文件(/etc/vimrc$VIMRUNTIME/defaults.vim等)中找到hi集。并且不明白 default 方案是什么。
我没有修改过$VIMRUNTIME文件,只在$HOME/.vim中修改过。为什么DiffAdd-s不一样?

gj3fmq9x

gj3fmq9x1#

default并不是一个配色方案,例如desert。Vim可能安装了它的运行时文件,也可能没有安装它的内置配色方案。为了仍然能够提供一个“默认”配色方案,default的样式属性是hardcoded
也就是说,在您使用的两个版本之前,DiffAdd有一个蓝色背景,它仍然这样做,所以这里没有什么可看的。
在两个Vim中,以下命令的输出是什么?

:verbose hi DiffAdd
k3fezbri

k3fezbri2#

@romainl,你是对的,你给我指出了正确的地方。我已经从Cygwin Time Machine下载了vim-7.4.2181-1-src.tar.xz,并在其中找到了文件vim-7.4-syncolor.patch,其中vim74/src/syntax.cCygwin 修补:

diff -up vim74/src/syntax.c.syncolor vim74/src/syntax.c
--- vim74/src/syntax.c.syncolor 2014-04-16 15:10:30.362287904 +0200
+++ vim74/src/syntax.c  2014-04-16 15:12:50.278229744 +0200
@@ -6840,8 +6840,8 @@ static char *(highlight_init_light[]) =
    CENT("Visual term=reverse",
         "Visual term=reverse guibg=LightGrey"),
 #ifdef FEAT_DIFF
-   CENT("DiffAdd term=bold ctermbg=LightBlue",
-        "DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue"),
+   CENT("DiffAdd term=bold ctermbg=LightRed",
+        "DiffAdd term=bold ctermbg=LightRed guibg=LightBlue"),
    CENT("DiffChange term=bold ctermbg=LightMagenta",
         "DiffChange term=bold ctermbg=LightMagenta guibg=LightMagenta"),
    CENT("DiffDelete term=bold ctermfg=Blue ctermbg=LightCyan",
@@ -6928,8 +6928,8 @@ static char *(highlight_init_dark[]) =
    CENT("Visual term=reverse",
         "Visual term=reverse guibg=DarkGrey"),
 #ifdef FEAT_DIFF
-   CENT("DiffAdd term=bold ctermbg=DarkBlue",
-        "DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue"),
+   CENT("DiffAdd term=bold ctermbg=DarkRed",
+        "DiffAdd term=bold ctermbg=DarkRed guibg=DarkBlue"),
    CENT("DiffChange term=bold ctermbg=DarkMagenta",
         "DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta"),
    CENT("DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan",

如果在两个二进制文件 LightBlue(4)和 LightRed(1)中都找到DiffAdd,则结果相同。
找到原因了,现在我冷静下来了,非常感谢@romainl

相关问题