Que tal :%s,-\@<!---\@!,---,g
? Dessa forma, não mudará '---' para '----'.
Eu sei que provavelmente há uma maneira de fazer isso usando o regex, mas não consigo descobrir o regex no vim. Eu tentei pesquisar: /-\{2}
, mas também pega triplos hífens.
Eu também não posso apenas fazer um tradicional encontrar e substituir, já que eu tenho triplos hífens no meu arquivo. A pesquisa por --
retorna hifens triplos, além de duplos hífens.
Seu exemplo funciona para mim, então suspeito que você tenha um caractere diferente em seu arquivo que apenas se pareça com um hífen.
Eu gostaria de sugerir colocar o cursor em um no modo normal, digitando yl
para arrancar o caractere, depois digitando / seguido pressionando control-r e depois "(aspas duplas). Se isso funcionar, você pode usar o mesmo truque para criar seu comando substituto.