use vimdiff with a diff file
Instead of using /usr/bin/vimdiff
command, try this:
$ vim file :vertical diffpatch path/to/diff
(:vert diffpa
for short.)
This is equivalent to calling vimdiff
on the original file and the subsequently patched file, but vim
calls patch
on a temporary file for you.
Edit
If you want vim
's diff-mode to be entered automatically, use this:
$ vim file +'vert diffpa path/to/diff'
where +command
asks vim
to execute "command". (+123
jumps to line 123, +/abc
jumps to the first match for "abc", it's all documented.)
Regarding Ken's query: if the diff file includes hunks applying to files other than the file you're currently editing, no worries; vim
calls the patch
executable underneath, which will ask for the locations of these mysteriously missing files, and you can tell patch
to just skip those hunks.
Coming from the other direction. I wrote a Vim plugin that shows the changes that have been made to a file since the last save in either vimdiff or unified diff format.
Get it here: diffchanges.vim
Make a copy of the original file, apply the diff and then
vimdiff original_file patched_file
You could also look at vim.org scripts which have been written to deal with svn diff output. If you are generating your diff from a version control system then take a look at the vcscommand.vim : CVS/SVN/SVK/git integration plugin.