Suponho que cada um de seus pares key: value esteja em sua própria linha, assim:
var myObject = {
key1:val1,
key2:val2,
};
Em seguida, as 2 regex / substituições a seguir realizam o que você precisa:
:%s/\(.*\):/'':/
seguido por %s/''/'/
O primeiro substitui todo o texto que precede dois pontos (esse é o \(.*\):
parte) com o mesmo texto (mas cercado por aspas) e os dois pontos novamente (a parte '':
). Isso não leva em conta as chaves que já foram citadas, de modo que o segundo comando simplesmente substitui qualquer conjunto de duas aspas simples por apenas uma aspa simples.
O primeiro comando não funcionará se você tiver vários pares chave: valor em uma única linha. Nesse caso, você pode tentar algo como :%s/, \(.*\):/, '':/
, onde há uma vírgula e espaço no início das duas expressões. Você ainda teria que limpar a primeira entrada em cada objeto, já que eles não são precedidos por vírgulas.
Qualquer comando que você usar, eu recomendaria terminá-lo com /c
, como em :%s/\(.*\):/'':/c
, para que você possa confirmar cada substituição, pelo menos para ter certeza de que funciona da maneira que você quiser.
Boa sorte!