Introduction to Vim-Diff
Table of contents
Vim-Diff is a great tool to compare two scripts and do instant merging from one to another. It is fast and very efficient to work with. Vim-Diff comes with Vim as a default functionality.
Usage
To activate Vim-Diff, there must be two script files (buffers) open in the same Vim window. To create such a thing, when you have a single file open in Vim, in command mode type :vnew
. This creates a new buffer in the same window. In the new one, you can place the other script to be compared. Then, type; :windo diffthis
This activates Vim-Diff. Voalá! The differences will be highlighted in both buffers.
To switch between windows, use Ctrl+w+w
. Optional ones; Ctrl+w+h
(move to the left window) or Ctrl+w+l
(move to the right window). Since this still requires three key-strokes, you can reduce this by mapping Ctrl+movements keys into those in vimrc as follows.
"this mapping makes switching between buffers easier.
nnoremap <C-H> <C-W>h
nnoremap <C-J> <C-W>j
nnoremap <C-K> <C-W>k
nnoremap <C-L> <C-W>l
Instead of copy/paste from one script to another, we can use vim commands to merge the difference across the scripts. There are two commands for this; do
and dp
.
do
do
command means diff-obtain. The change under the cursor is replaced by the content of the other file making them identical. If you are in script A, it will merge from B to A.
dp
dp
command means diff-put. It puts changes under the cursor into the other file making them identical (thus removing the diff). In this case, if you are in script A, it will merge from A to B.
Additional commands
Jump to the next diff. ]c
Jump to the previous diff. [c
To stop the difference, in the command mode, type :diffoff
I hope you find this blog post useful. If you have any questions about this, do not hesitate to contact me.
Subscribe to my newsletter
Read articles from Enis Arik directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Enis Arik
Enis Arik
Software Engineer.