Software development and maintenance can get complicated sometimes. And you might find yourself comparing code or configuration changes.
When you compare them manually, you might make a mistake, and it's easy to miss minute changes. Apart from that, finding changes in large files can be exhausting.
There are many online tools and text editors that help you efficiently compare files. But there is an easier, hassle-free method to compare files using the Linux command line.
The Linux command line is very powerful and provides a file comparison utility within
vim to differentiate files side by side.
Learning file comparison in the command line is helpful because many servers use only a CLI (Command Line Interface). This means that you don't have the luxury of a GUI where you can run the browser or other text editors.
What is vimdiff?
Vimdiff is a Linux command that can edit two, three, or four versions of a file with
Vim and show their differences.
For comparing two files, the syntax is the following:
vimdiff [options] file1 file2
Let's compare two files
index.js.bkp to see their differences.
vimdiff index.js index.js.bkp
Here we can see the difference in the highlighted line.
To make things easier, we can show the line number as well. When you are in
Vim, go to the extended command mode by pressing escape twice and typing
:set number. This will reveal the line numbers for the current session.
Let's have a closer look at the output again:
- Uncollapsed lines: These are the lines of codes that have not been changed. these are wrapped and can be uncollapsed using a combination of the
- Highlighted changes: These are the differences present in a file.
- Line numbers: These are the corresponding line numbers in files.
- File names: The file name on the left is the first filename mentioned in the command. The file name on the right is the second filename provided in the command.
There is also a way to enable line numbers in Vim by default so you don't have to set it manually each time.
How to show line numbers by default in Vim on Linux
If you like to view line numbers by default in
Vim, you can follow these steps:
- Locate the
Vim configurations are present in the
vimrc file. The file location might vary from one Linux distribution to the other. In Ubuntu, the
vimrc file is located in
2. Edit the
set number in the file and save and exit.
Now whenever you open
Vim, the line numbers will be there by default.
Let's see how we can utilize the powers of
First, make sure you are in the command mode.
You can go into the command mode by pressing the
escape key twice.
How to split screens horizontally
vimdiff splits the screen vertically. If you like to see the files split horizontally, you can use the flag
-o like this:
vimdiff -o index.js index.js.bkp
How to navigate in diff window
- Navigate between diff windows
To navigate between panes, use a key combination of
Ctrl+W+W. The cursor will switch between the files once you press the keys.
- Jump to changes
Instead of scrolling down line by line and scanning for the changes, you can jump to the change with a specific key combination.
- To move to the previous change use:
[ + c.
- To move to the previous change use:
] + c
How to apply changes from diff window
- To apply changes from the left file to the right file:
To apply the changes from the left file to the right file, first, move to the highlighted change. Then, use the command:
Remember that you'll need to be in the command mode.
- To apply changes from the right file to the left file:
To apply the changes from the right file to the left file, first, move to the highlighted change. Then, use the command:
How to undo changes
If you make a mistake, you can undo the changes provided you didn't save the file.
When you are in the command mode press
u to undo the last change.
If you've recently undone a change, you won't be able to see the highlighted changes as before. You'll need to refresh to see the changes once again. You can do this by using the command:
How to open and close folds
The unchanged lines are wrapped to provide better readability.
To view the uncollapsed lines as shown above, move the cursor there and use the following key combinations:
- To open the folds:
z + o.
- To close the folds:
z + c.
How to exit the diff window
There are many ways to exit the diff window depending on the end result.
:qato exit all the files without saving.
:qto exit the files one by one without saving.
:wq!to save and exit files one by one.
Comparing files is easy and fast with
vimdiff as we compare files within the command line. In this tutorial, you learned how to use the
vimdiff command to efficiently find differences in code or configuration files.
I hope you found this tutorial helpful. Thank you for reading till the end.
What’s your favorite thing you learned from this tutorial? Let me know on Twitter!
You can also read my other posts here.
Programming vector created by storyset - www.freepik.com