Ну, во-первых, я чувствую себя обязанным упомянуть, что есть сайт, посвященный vim вопросам...
Тем не менее, есть несколько способов, которыми вы можете достичь этого. Одним из способов будет использование "регистра оценки" в вашей команде замещения. Это будет выглядеть так:
:%s/-\+/\=repeat('=', len(submatch(0)))
По сути это говорит:
Замените одну или несколько черточек на '=', повторенную n раз, где n - количество черточек.
Это самый простой / очевидный способ, но он немного неуклюжий / многословный, что типично для команд замены, использующих регистр оценки.
Вы также можете сделать это с помощью глобальной команды. Это будет выглядеть примерно так:
:g/^-\+$/norm Vr=
По сути это говорит:
В каждой строке, содержащей только тире, введите Vr=
как если бы я набрал ее сам.
V
визуально выделит всю строку, а r=
заменит весь выбор символами '='.