Skip to main content

Programmer's Guide: Find and Replace with Vim

Many of us don't like Vim because of it's unconventional and unique command set. But if you get to know certain functionalities common to other popular editors, you would not be required to lift your hands from keyboard while typing. One such functionality that we often use in editors is "Find and Replace". The same feature, with many more customizations, is also provided by Vim. This post will focus on various Find and Replace features of Vim.

Let's start with a file which contains a lot of "lorem ipsum".

Now let us replace "lorem ipsum" with "hello world".

First, we will focus on replacing "lorem" with "hello" in the first line. We need to execute following command in vim.
:s/lorem/hello/g

The :s signifies "substitute" command provided by vim.
The g flag at the end means "global". This means that all the occurrences in the selected context will be changed. In this case, all the occurrences in the first line will be changed.

In the below image, you can see "lorem" has been replace by "hello" in the first line.


Let us now replace all the "lorem" with "hello". To replace all, we use :%s instead of :s.
Command:
:%s/lorem/hello/g


If you observe closel, the "Lorem" in the second line has not been replaced. This is because, by default, the substitute function is case-sensitive. We need to use i flag to make it case-insensitive.
Command:
:%s/lorem/hello/gi


But Find and Replace (F&R) tools also ask for confirmation before actually making changes. Can we do that in vim? Yes of course! Vim can do everything that a normal F&R tool can do. Just use c flag at the end. Let us replace all the "ipsum" with "world".
Command:
:%s/ipsum/world/gc

Here,
y: yes, replace this match
n: no, skip this match
a: all, replace all
q: quit
l: last match i.e.replace this match and exit
The last two are just to scroll up or down.

So, after pressing a, we have accomplished our objective of replacing "lorem ipsum" with "hello world".

Finally, when we want to replace exactly matching words and not all the matches, for example, in the above file if we want to replace "is" with "was" but do not want to replace the substring "is" in "This", we can use the following command:
:%s/\&#60is\&#62/was/gc



There are many more uses of Vim ":substitute" command. I hope this post will encourage you to explore more about them. I would recommend using command line and Vim to work with files on remote servers.

Comments

Popular posts from this blog

My Entry into the World of Credit Cards

After joining my job in June 2018, my salary account was opened in ICICI Bank. During the account opening process, I was offered a Life Time Free (LTF) credit card. Simply put, this was my first chance to get into the credit world without any extra hassle because first of all, neither was I aware of the concept of credit scores nor I had any credit history and secondly, I was just curious about credit cards after seeing of my father use his credit cards with extra caution and the monthly event of credit card bill payment that used to happen at my home. And in that sudden moment of joy, I made my first mistake in the credit world. Representative Image (Source: https://jessepollak.github.io/card/) Now if your guess is that I started spending crazy amounts of money which I couldn't repay, then you are WRONG! I am a miserly person. Money doesn't leave my hands and in general, my credit utilization has never exceeded 5% of my credit limit. So coming back to my first mis...

ICICI Credit Limit Increase Offer

Recently, ICICI Bank offered me a free credit limit increase for my Lifetime Free ICICI Platinum Chip Credit Card. My limit is being increased by ~31%. For last couple of weeks, I was seeing increased available credit limit on my ICICI net-banking page. I also received an SMS stating that they are offering me a free credit limit increase, after the bill for the latest credit cycle was generated. The same limit enhancement offer is visible in iMobile app as well. See the last SMS message in the above screenshot In the Latest Bill tab you will see the Manage Limit option just above My Rewards. I have been using the card for around 10-11 months. Although this increase seems low, considering utilization, it seems fair. The highest credit utilization was around 15% once, while for the last couple of months, it was <1%. On average it was in 2-3% range. One can accept the increase through any of the three modes, SMS, netbanking or iMobile. It will immediately update the lim...

The Japanese Constitution - Chapter 1

Chapter 1 - The Emperor Article 1 The Emperor shall be the symbol of the State and of the unity of the People, deriving his position from the will of the people with whom resides sovereign power. This article makes the post of emperor a symbolic one just like the post of Queen in UK or the post of president in a parliamentary democracy. It also emphasizes that the real power resides in the hands of people making it clear that there will be a democratic order of governance in Japan. Article 2 The Imperial Throne shall be dynastic and succeeded to in accordance with the Imperial House Law passed by the Diet. This article describes how the people will control the position of emperor through their elected representatives. Article 3 The advice and approval of the Cabinet shall be required for all acts of the Emperor in matters of state, and the Cabinet shall be responsible therefor. Article 4 The Emperor shall perform only such acts in matters of state as are provided for in th...