Vim - Capture strings on Search and use on Replace
Use \1
... See the wiki here: http://vim.wikia.com/wiki/Search_and_replace
More explicitly:
%s:/#page-site-index \(.toolbar .items\)/#page-site-index \1, #page-site-login \1/g
You've already grouped the interesting parts of the regular expression via \(...\)
in your attempt. To refer to these captured submatches inside the replacement part, use \1
, \2
, etc., where the number refers to the first (opened) capture group, from left to right. There's also \0
== &
for the entire matched text. See :help /\1
for more information.
try this command in your vim:
%s/\v#(page-site-index )(\.toolbar \.items)/&, #page-site-login \2/g
you could also use \zs, \ze
and without grouping:
%s/#page-site-index \zs\.toolbar \.items\ze/&, #page-site-login &/g
keep golfing, if the text is just like what you gave in question, you could:
%s/#page-site-index \zs[^{]*\ze /&, #page-site-login &/g