Я предполагаю, что каждая из ваших пар ключ: значение находится на отдельной строке, вот так:
var myObject = {
key1:val1,
key2:val2,
};
Затем следующие 2 регулярных выражения / замены выполняют то, что вам нужно:::%s/\(.*\):/'\1':/
а затем %s/''/'/
Первый заменяет весь текст, который предшествует двоеточию (это \(.*\):
Part), тем же текстом (но в кавычках) и снова двоеточием ('\1':
part). Это не учитывает ключи, которые уже заключены в кавычки, поэтому вторая команда просто заменяет любой набор из 2 одинарных кавычек только одной одинарной кавычкой.
Первая команда не будет работать, если у вас есть несколько пар ключ: значение в одной строке. В этом случае вы можете попробовать что-то вроде :%s/, \(.*\):/, '\1':/
где в начале двух выражений есть запятая и пробел. Вам все равно придется очистить первую запись в каждом объекте, так как перед ней не стоит запятая.
Какую бы команду вы не использовали, я бы рекомендовал заканчивать ее на /c
, например :%s/\(.*\):/'\1':/c
чтобы вы могли подтвердить каждую замену, по крайней мере, чтобы убедиться, что она работает так, как вы хотите.
Удачи!