vimdiff – the cool way to diff for vim users
Some of you using the vim editor may not know about a tool that comes with vim called vimdiff. Vimdiff is an awesome way to diff files if you are a vim nut. It gives you the power of vim + the power of diff.
How’s this different from opening 2 files in vim (with -O option) you ask ? The difference is that vim will highlight the diff for you.
Fire it up by giving the 2 filenames, say
$vimdiff old new
This will bring up a screen like this -
Now you can move around the 2 parts of the screen with your regular vim commands. For eg. use (Ctrl+w) + right arrow to move to the right half of the screen.
You can copy paste as well. Go to the 2nd line in the left half and press the y key twice to copy that line. Use (cntrl + w) + right arrow to move cursor to the 1st line in the right half of the screen. Press p to paste the copied line below the 1st line.
You can go to the first line and delete the two words “a new” by moving the cursor to “a” and hitting d2w key combo.
Insert “an old” there by going to insert mode(press i key) and then typing the two words. You’ll see that vimdiff does not highlight anything. This means that there is no difference between the two files.
Vimdiff is the same as bringing up vim with the -d option. You could do the same things you did above by using
$vim -d old new
Bonus :
You can also diff 2 URLs directly with vimdiff
Try
$vimdiff 'http://www.google.co.in/search?q=vimdiff' 'http://www.google.co.in/search?q=vim'
You’ll first see something like this coming on screen
:!curl -o '/tmp/v959288/1' 'http://www.google.co.in/search\?q=vimdiff'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
"/tmp/v959288/1" 4L, 5289C
:!curl -o '/tmp/v959288/2' 'http://www.google.co.in/search\?q=vim'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
"/tmp/v959288/2" 4L, 5253C
Press ENTER or type command to continue
Now press the ENTER key to see the diff
You can throw in ssh into the mix as well. Try something like this
$vimdiff old <(ssh user@host cat ~/new)
If you're a vim/vimdiff ninja and know some more tricks, do post them below
Happy hacking...
Related posts:








If you have differences between files, you can use the keys ‘do’ and ‘dp’ to automatically copy from the second file and to the second file, respectively.
nice to know, John. Thanks
This is awesome. You have just made my day. I can’t wait to use it at work tomorrow.