如何使用vim作为寻呼机设置彩色git diff

时间:2013-06-09 19:42:41

标签: git vim diff

我无法配置git来遵循我的要求:

  1. 使用vim作为差异分页器
  2. 在交互模式下添加文件时保留差异的颜色
  3. 我的~/.gitconfig设置:

    [color]
        ui = auto
        # diff = false
    
    [pager]
        diff = vim -
    

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

    interactive adding

    这样做的缺点是vim中的diff已损坏。请参阅git diff的输出:

    diff using vim

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

3 个答案:

答案 0 :(得分:11)

您需要安装AnsiEsc plugin并在加载文件后立即运行: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' -"

答案 1 :(得分:4)

这里有两种选择。

Use Vimdiff as a 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正在弄乱事情 你获得^[32m等原因是因为你试图在Vim中读取shell颜色。这不起作用。

答案 2 :(得分:0)

尝试以下设置:

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

git config --global difftool.prompt false