2016-08-02 56 views
1

我需要使用VIM编辑器在多行上交换json文件中的标记和值。VIM:在双引号内交换json值

例如: 这样的:

{"value":"PAE","tag":"project:aerospace;id:3364"} {"value":"#cybersecurity","tag":"project:aerospace;id:3178"} {"value":"Boeing","tag":"project:aerospace;id:3342"} {"value":"Airbus","tag":"project:aerospace;id:3335"}

需求是:

{"tag":"project:aerospace;id:3364","value":"PAE"} {"tag":"project:aerospace;id:3178","value":"#cybersecurity"} {"tag":"project:aerospace;id:3342","value":"Boeing"} {"tag":"project:aerospace;id:3335","value":"Airbus"}

:%s/tag/value/g我得到(使用温度)为标签和值,但我需要知道如何在第二和第四个双引号或逗号前后的所有内容之间进行交换。

回答

4
%norm! f,xdT{f}i,^R" 

在上面CMD,^Rctrl-v ctrl-r

+0

谢谢!像魅力一样工作。 – bspckl

0

这应该做的伎俩:

%s/\v("value":"[^"]+"),("tag":"[^"]+")/\2,\1/ 

采用“非常神奇”,使事情变得更加简单,节省了两个组,并使用反向引用替换它们。

1
:%s/{\([^,]*\),\([^,]*\)}/{\2,\1}/ 

这样的事情?