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.