If the substitution values ββdiffer only in the numbers at the ends, use the command
:let n=[0] | %s/|/\='new'.map(n,'v:val+1')[0]/g
(See my answer to the question " gVim find / replace with counter " for a detailed description of the technique.)
In the case of substitution values ββthat differ significantly from each other, change the command to replace not the serial number of the occurrence, but the item a list of notes with this number as an index.
:let n=[-1] | %s/|/\=['one','two','three'][map(n,'v:val+1')[0]]/g
To perform replacements on each line independently, use the :global command to iterate one of the above commands along the buffer lines.
:g/^/let n=[0] | s/|/\='new'.map(n,'v:val+1')[0]/g
Similarly
:g/^/let n=[-1] | s/|/\=['one','two','three'][map(n,'v:val+1')[0]]/g
source share