Saya akan mengira bahwa masing-masing kunci Anda: pasangan nilai berada pada barisnya sendiri, seperti:
var myObject = {
key1:val1,
key2:val2,
};
Kemudian 2 regex / substitusi berikut memenuhi apa yang Anda butuhkan:
:%s/\(.*\):/'\1':/
diikuti oleh%s/''/'/
Yang pertama menggantikan semua teks yang mendahului titik dua (itu \(.*\):
bagian) dengan teks yang sama (tetapi dikelilingi oleh tanda kutip) dan titik dua lagi ( '\1':
bagian). Ini tidak memperhitungkan kunci apa pun yang sudah dikutip, sehingga perintah kedua hanya mengganti set dari 2 kutipan tunggal dengan hanya 1 kutipan tunggal.
Perintah pertama tidak akan berfungsi jika Anda memiliki beberapa kunci: pasangan nilai pada satu baris. Jika demikian, Anda dapat mencoba sesuatu seperti di :%s/, \(.*\):/, '\1':/
mana ada koma dan spasi di awal dua ekspresi. Anda masih harus membersihkan entri pertama di setiap objek, karena itu tidak didahului oleh koma.
Apa pun perintah yang Anda gunakan, saya sarankan mengakhirinya dengan /c
, karena dengan :%s/\(.*\):/'\1':/c
begitu Anda dapat mengonfirmasi setiap penggantian, setidaknya untuk memastikan itu berfungsi seperti yang Anda inginkan.
Semoga berhasil!