Normal mode replacement
One of Vim’s many selling points is the usefulness of normal mode. Except for the occasional session when authoring original code or content, we spend most of our time in normal mode, navigating, searching, reading and reasoning. I prefer to make use of Vim features which allow me to stay in normal mode whenever possible. This is where normal mode replacement with r
shines.
While r
is a simple feature, any time you need to swap a single character it can be performed without leaving normal mode. Simply navigate to the character in question and hit r
followed by the character you wish to replace it with and… done! The replacement has been made, never leaving normal mode. This saves several steps: The alternative would be to erase the character with x
, and then enter insert mode with i
and then finally transition back to normal mode with <Esc>
.
You can also replace more than one character. Here are some handy variants of the single character replace which can come in handy.
- Prepend the replacement with a number to replace an arbitrary set of charaters from the current position.
5r*
will replace the current and next four with an asterisk. - Press
r
followed by<ctrl-e>
or<ctrl-y>
, and the current character is replaced with the character directly below or above the current character. This is thematically related to our recent post copying words from above or below. - Press
r
is followed by<Enter>
and the next character will be replace with a line break. Prepend with a number and the nextx
characters will be replaced by a single line break.
Take a look at the video below. Here’s how I try out two of these:
- Go to the mistaken
n
with/n<Enter>
- Replace the
n
withr
followed byn
- Find
s<space>
, go to the next occurrence with n - Then replace the
s
and the space after it with2r<Enter>