'Using vim as git difftool

I've configured Vim as git difftool in .gitconfig

[diff]
    tool = vimdiff

If there are changes in N files, i have to close vim (:qa) to see the next diff.

How do i navigate to the next/previous diff without quitting vim?



Solution 1:[1]

There is no way to tell vimdiff to go to the next file, because git difftool invocates vimdiff for each diff file.

So when you end vimdiff with qa, git diff executes vimdiff again with the next file. From vimdiff's perspective there is no next diff file.

You can suppress the prompt for launching vimdiff, which makes it less annoying:

git config --global difftool.prompt false

But, as you already found out yourself, the vim plugin vim-fugitive is the way to go. This excellent plugin offers various commands for diffing and merging.

Solution 2:[2]

Found this helper script useful (not mine). https://gist.github.com/Osse/4709787

Download the script and set executable permissions.

? git config --global difftool.vimtabdiff.cmd '~/path/to/vimtabdiff.zsh $LOCAL $REMOTE'

And set an alias

? git config --global alias.dt 'difftool --tool vimtabdiff --dir-diff'                          

Now, the the files with differences each open in a new tab with git dt

]c and [c to move to next and previous diffs within the file. gt, gT to move to next and previous file.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 cutemachine
Solution 2 balki