Skip to content

Instantly share code, notes, and snippets.

@trinitronx
Forked from zertrin/vimdiff.md
Last active September 7, 2025 20:47
Show Gist options
  • Save trinitronx/6c16be27e7ff9eb228b26f10cc310456 to your computer and use it in GitHub Desktop.
Save trinitronx/6c16be27e7ff9eb228b26f10cc310456 to your computer and use it in GitHub Desktop.

vimdiff cheat sheet

vimdiff commands

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

Moving between windows

  • Ctrl+W h move to the window on the left
  • Ctrl+W j move to the window below
  • Ctrl+W k move to the window above
  • Ctrl+W l move to the window on the right
  • Ctrl+W t move to the TOP window
  • Ctrl+W b move to the BOTTOM window

Moving windows

  • Ctrl+W K move window to the upper
  • Ctrl+W H move window to the far left
  • Ctrl+W J move window to the bottom
  • Ctrl+W L move window to the far right

vimdiff key mappings

" vimdiff diffget mappings.
map <Leader>1 :diffget LOCAL<CR>
map <Leader>2 :diffget BASE<CR>
map <Leader>3 :diffget REMOTE<CR>

git mergetool

git config --global merge.tool=vimdiff

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.

@trinitronx
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment