Isso fará o que você quiser:
:%s/\(\d\+\)-\(\d\+\)/\=join(range(submatch(1),submatch(2)),',')/g
Claro, você pode querer colocá-lo dentro de um comando definido pelo usuário:
:command! -nargs=0 RangeReplace %s/\(\d\+\)-\(\d\+\)/\=join(range(submatch(1),submatch(2)),',')/g