С vim wiki :
let @a=1 | %s/STRING/\='STRING_'.(@a+setreg('a',@a+1))/g
Но это даст вам STRING_1, STRING_2 и т. Д.
Небольшая модификация дает желаемый результат:
let @a=65 | %s/STRING/\='STRING_'.nr2char(@a+setreg('a',@a+1))/g
Если вы хотите получить подстановки из массива, сначала определите массив:
:let foo=['bar','baz','bak']
Затем выполните подстановку:
let @a=0 | %s/STRING/\=get(foo, @a+setreg('a',@a+1))/g
Это даст вам:
Color of my pant is bar. Color of my hair is baz. Color of my car is bak.