Substitute with contents of register or lines range from elsewhere in file in Vim

Paolo Tedesco picture Paolo Tedesco · Mar 19, 2009 · Viewed 10.3k times · Source

I'm using Vim, and I want to substitute some placeholder text with a long string, that spans several lines, which is already written somewhere else in the file.

Is it possible to replace a pattern with the contents of a register? Something like

:%s/foo/<contents of register A>

Otherwise, is it possible to replace with a range of lines? something like

:%s/foo/<content of lines from 10 to 15>

Answer

David Wolever picture David Wolever · Mar 19, 2009

According to http://vim.wikia.com/wiki/Search_and_replace It appears:

:%s/foo/\=@a/g

Also, pressing <c-r>a while in insert mode will insert the contents of register a.

Cool -- I never knew that. Good question.

Some other things to do with <c-r>: http://vimdoc.sourceforge.net/htmldoc/cmdline.html#c_CTRL-R