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?
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' -"
You have two alternatives here.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With