This article covers Vimdiff Cheat Sheet & Visual Code Merging Guide, originally published as a secure GitHub Gist snippet.

vimdiff cheat sheet

##git mergetool

In the middle file (future merged file), you can navigate between conflicts with ]c and [c.

Choose which version you want to keep with :diffget //2 or :diffget //3 (the //2 and //3 are unique identifiers for the target/master copy and the merge/branch copy file names).

:diffupdate (to remove leftover spacing issues)
:only (once you’re done reviewing all conflicts, this shows only the middle/merged file)
:wq (save and quit)
git add .
git commit -m “Merge resolved”

If you were trying to do a git pull when you ran into merge conflicts, type git rebase –continue.

##vimdiff commands

]c :        - next difference
[c :        - previous difference
do          - diff obtain
dp          - diff put
zo          - open folded text
zc          - close folded text
:diffupdate - re-scan the files for differences

📂 Advanced Directory Diffing (dirdiff Fish function)

If you are using the Fish shell, you can configure this custom helper function to visually compare a reference base directory path against your current working directory's sub-path utilizing Neovim's DirDiff plugin:

function dirdiff -d "Compare reference dir path ($1) and current working directory on sub path ($2)"
    # Shell-escape each path:
    # $1 - reference dir base
    # $2 - sub. path from cwd
    set -l REF "$argv[1]"
    set -l SUB "$argv[2]"
    nvim $argv[3..-1] "+DirDiff $REF/$SUB $SUB"
end

Usage:

Run the command by specifying the reference directory base path first, followed by the relative sub-path in your current directory:

dirdiff /path/to/reference/directory relative/subpath

This triggers Neovim, runs the DirDiff command, and loads a visual split layout comparing both directories in real time.