10

我无法配置 git 来满足我的要求:

  1. 使用 vim 作为差异寻呼机
  2. 在交互模式下添加文件时保持差异颜色

我的~/.gitconfig设置:

[color]
    ui = auto
    # diff = false

[pager]
    diff = vim -

使用此配置,交互模式git add --interactive会按预期产生彩色输出:

交互式添加

这样做的缺点是 vim 中的差异已损坏。查看输出git diff

使用 vim 的差异

使用git diff | vim -颜色时可以,但我懒得输入完整的命令。是否有任何已知的方法可以在这两种情况下保留颜色?

4

3 回答 3

14

您需要安装AnsiEsc 插件:AnsiEsc在加载文件后立即运行。您可以将寻呼机设置vim -c AnsiEsc -为执行此操作。

或者,使用 vim 自己的突出显示:使用相同的方法 ( -c command) 运行

%sm/\e.\{-}m//g
set ft=diff

    diff = "vim -c '%sm/\\e.\\{-}m//g' -c 'set ft=diff' -"
于 2013-06-10T00:28:58.397 回答
4

您在这里有两个选择。

使用 Vimdiff 作为 difftool

$ git config --global diff.tool vimdiff
$ git config --global difftool.prompt false
$ git config --global alias.d difftool

[diff]
    tool = vimdiff
[difftool]
    prompt = false
[alias]
    d = difftool # Not needed, just a convenience. $ git difftool, still works.

常规的 Git 差异,但具有颜色高光。

$ git config --global color.ui true

[color]
    ui = true

现在,你有一个奇怪的组合。您当然可以同时使用两者,但这会使pager事情变得混乱。
你得到^[32metc 的原因是你试图在 Vim 中读取 shell 颜色。这行不通。

于 2013-06-09T20:22:42.807 回答
0

试试这些设置:

git config --global diff.tool vimdiff
git config --global merge.tool vimdiff

git config --global difftool.prompt false
于 2013-06-09T19:53:29.857 回答