我想使用vim向列表中的对象添加新字段。每个对象的行数不同。但是,每个对象的最后一个字段是相同的。
每个对象的新字段是相同的,所以我想我可以创建一个vim宏,它将在每个对象的末尾插入静态字段,以及在前一行插入逗号。我的问题是我无法在宏录制器中执行字符串搜索。
以下是我要完成的一个例子:
Input:
[
{
"prop1": 10,
"prop2": 30,
"last": 99
},
{
"prop1": 80,
"last": 10
},
{
"propA": 33,
"propB": 90,
"propC": 38,
"last": 100
}
]
Desired Output:
[
{
"prop1": 10,
"prop2": 30,
"last": 99,
"new": 0
},
{
"prop1": 80,
"last": 10,
"new": 0
},
{
"propA": 33,
"propB": 90,
"propC": 38,
"last": 100,
"new": 0
}
]
我尝试通过在vim中键入以下内容来完成此操作:q q /last ENTER $ a , ESC p q
。我将"new: 0
复制到我的剪贴板。看起来搜索部分不起作用,因为每次运行宏时,它都会粘贴光标所在的行,而不是下一行字符串" last"。
答案 0 :(得分:0)
您可以执行以下命令:
:%s#\v^(\s*)"last":\s*\d*\zs#,\r\1"new": 0#g
您仍然可以使用宏来实现:
首先猛拉这条线:
"new": 0
然后执行这些击键:
qqq
qq/last ENTER A,ESCpq
注意:ENTER和ESC是键盘上的键