Using vimdiff

vimdiff works on two, three or four files, opens each file in a separate window and highlights the differences between the files. The files can be edited using the vim commands. vimdiff is a useful tool for finding the differences between different versions of a file and for resolving conflicts between file versions.

vimdiff showing three versions of Hello World program

vimdiff can be started as,

$ vimdiff [options] file1 file2 [file3 [file4]]

vimdiff is actually running vim in the diff mode and the command is equivalent to,

$ vim -d [options] file1 file2 [file3 [file4]]

The -o option opens files in horizontal windows. The -O option opens files in vertical windows, which is the default. The vertical windows put files side by side and the lines are aligned, which makes it easy to use.

Navigating between windows

Each window has a file opened under vim. So all the vim commands are available for editing text in each window. As you edit a file in one of the windows, the output highlighting the differences is updated.

Under vim, the four basic commands for moving cursor left, down, up and right are h, j, k and l respectively. So, it is not surprising that the commands for moving cursor from one window to another are,

CTRL w h: Go to window on the left
CTRL w j: Go to window below
CTRL w k: Go to window above
CTRL w l: Go to window on the right

Quiting vimdiff

You can save modified files in each window with the :w command and quit an individual buffer window with the :q command. This will take some time for multiple windows. The command :qa quits all file windows if no files have been modified. Also, :qa! command force quits all buffer windows and any changes made in any of the files are discarded. If you wish to save any files that might have been modified and quit all the file windows, the command is :xa. So, basically, one has to add an a after the corresponding vim commands.

vimdiff is a tool for merging conflicting branches in the popular Git version control system.

See also