I'm currently using MacVim (Snapshot 64) "Split Diff by…" menu option.
The file is Django's my settings.py
from version 1.3.1 to a fresh file from version 1.4.
I know two basic commands
- do to "obtain" (and replace) a block from the other side.
- dp to "put" (and replace) a block to the other side.
But those two commands writes the entire block, which in MacVim is the purple highlights.
If you look at the 2nd block, you can see that from line 2 and 3 only has 2 words that are different: mysite
and hobbes3
. I just want to replace per line not the entire block.
So what is there a command to replace do do and dp per line as oppose to an entire block or do I have to manually type it out?
Bonus question: I noticed that once I manually edit a block, I lose the purple highlighting. How do I "refresh" the diff again to include the highlights without reopening the file?
Please try to keep the answers Vim-general as oppose to MacVim-specific.
Best Answer
There are a number of ways to do this.
:diffget
. For example, you could visually-select a range of lines withV
, then type:diffget
.:diffput
. For example, to put the current line into the other buffer, type:.diffput
.Y
, move the cursor to the destination buffer and put them where you want them withp
orP
, then delete the lines you don't want."0p
. That uses the 0 (zero) register which always contains the text of the most recent yank.To "refresh" the display to show the proper highlighting, execute
:diffupdate
or simply:diffu
. Sometimes that isn't sufficient and you need to move the cursor to the other window to complete the refreshing.You can read more about copying diffs in