Replacing text based on whats in the current search register is a quite handy tool that I use often. I believe I picked this tip up from Nic Janetakis, check out his YouTube channel for some amazing vim tips.
If there is one thing that I Like most about vim it's the ability to hack on it and make it work well for you.
Replacing text in vim
Vim can often be a bit verbose, but that's ok because we can hack on it, and make our own shortcuts and keybindings. For instance, finding and replacing text requires using a command at the vim command-line :
. Replacing foo with
bar looks like this :%s/foo/bar/g
, the final g means all of the foos, not just the first one on the line.
making it better
I have a keybinding in my init.vim
that will allow me to search for a pattern with the usual /
character, page through them as normal with n
and N
, but when I press <C-R>
it will populate the replace command for me so that all I need to do is type out the new text.
nnoremap <c-r> :%s/<C-R>///g<Left><Left>
Note on the <C-R>/
In command mode :
vim allows you to paste any text from any register into the current command. The <C-R>/
will paste the text from the current search register into the command.
<C-R>
in command mode can paste text from any register, you can see what registers are in use with the :reg
command. There are a lot of them and many get populated automatically as you yank text or create macros.
Also see how to use to save macros to key bindings easily
Top comments (3)
If you leave the pattern to search for out, vim will automatically re-use the
"/
register. So your binding could be shortened to:Since vim makes this so easy, I don't map this to anything myself.
You just blew my mind, and have saved me many future keystrokes.
Glad I could be of help!