在VIM中录制宏时搜索字符串

时间:2017-03-15 22:20:40

标签: vim macros

我想使用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"。

1 个答案:

答案 0 :(得分:0)

  • 您可以执行以下命令:

    :%s#\v^(\s*)"last":\s*\d*\zs#,\r\1"new": 0#g

  • 您仍然可以使用宏来实现:

首先猛拉这条线:

 "new": 0

然后执行这些击键:

qqq
qq/last ENTER A,ESCpq 

注意:ENTER和ESC是键盘上的键