Replace all characters in a regex match with the same character in Vim
As an alternative to using the :substitute
command (the usage of
which is already covered in @Peter’s answer), I can suggest automating
the editing commands for performing the replacement by means of
a self-referring macro.
A straightforward way of overwriting occurrences of the search pattern with a certain character by hand would the following sequence of Normal-mode commands.
Search for the start of the next occurrence.
/\(hello\)\+
Select matching text till the end.
v//e
Replace selected text.
r-
Repeat from step 1.
Thus, to automate this routine, one can run the command
:let[@/,@s]=['\(hello\)\+',"//\rv//e\rr-@s"]
and execute the contents of that s
register starting from the
beginning of the buffer (or anther appropriate location) by
gg@s
%s/\v(hello)*/\=repeat('-',strlen(submatch(0)))/g