Skip to content

Instantly share code, notes, and snippets.

@xguitian
Last active February 24, 2023 13:41
Show Gist options
  • Save xguitian/f820aa48ff6f401e18ca to your computer and use it in GitHub Desktop.
Save xguitian/f820aa48ff6f401e18ca to your computer and use it in GitHub Desktop.
vimmdiff cheatsheet

vimdiff cheatsheet

##vimdiff commands and control

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

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.

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