Reputation: 5039
I am unable to configure git to follow my requests:
My ~/.gitconfig
setup:
[color]
ui = auto
# diff = false
[pager]
diff = vim -
With this configuration the interactive mode for git add --interactive
produces coloured output as expected:
The downside of this is that diff in vim is corrupted. See the output of git diff
:
When using git diff | vim -
the colours are OK but I'm too lazy to type the full command. Is there any known method that preserves colours in both cases?
Upvotes: 10
Views: 4943
Reputation: 53604
You need to install AnsiEsc plugin and run :AnsiEsc
just after loading file. You can set pager to vim -c AnsiEsc -
to do this.
Alternatively, use vim own highlighting: using the same method (-c command
) run
%sm/\e.\{-}m//g
set ft=diff
:
diff = "vim -c '%sm/\\e.\\{-}m//g' -c 'set ft=diff' -"
Upvotes: 14
Reputation: 10260
You have two alternatives here.
$ 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.
Regular Git diff, but with color highlithing.
$ git config --global color.ui true
[color]
ui = true
Right now, you have a weird mix. You can of course use both, but the pager
is messing up things.
The reason you get ^[32m
etc is because you're trying to read shell colors in Vim. This doesn't work.
Upvotes: 4
Reputation: 45634
Try these settings:
git config --global diff.tool vimdiff
git config --global merge.tool vimdiff
git config --global difftool.prompt false
Upvotes: 0