There is no built-in feature of that kind.
Here I suggest a function that repeats command (for example '.' repeating last change command) at the positions of given marks. Both marks and command are specified as strings. Marks specified in the way ranges in regexp or scanf format specifier defined. For example, 'za-dx' means marks 'z', 'a', 'b', 'c', 'd', 'x'.
function! MarksRepeat(marks, command)
let pos = 0
let len = strlen(a:marks)
let alpha = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
let beta = '1234567899bcdefghijklmnopqrstuvwxyzzBCDEFGHIJKLMNOPQRSTUVWXYZZ'
while pos < len
if a:marks[pos + 1] != '-'
execute 'normal `' . a:marks[pos] . a:command
let pos += 1
elseif a:marks[pos] <= a:marks[pos + 2]
let mark = a:marks[pos]
let stop = a:marks[pos + 2]
if mark =~ '[0-9a-zA-Z]' && stop =~ '[0-9a-zA-Z]'
while 1
execute 'normal `' . mark . a:command
if mark == stop
break
endif
let mark = tr(mark, alpha, beta)
endwhile
endif
let pos += 3
endif
endwhile
endfunction
So the use-case you asking for is following:
- Mark places (except one) to insert simultaneously using Vim marks ('m' command).
- Actually insert text in the place you did not mark.
:call MarksRepeat(‹marks›, '.')
The last step, of course, could be simplified by definition of custom command and/or mapping.