我需要使用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
(使用临时值)作为标记和值,但我需要知道如何交换第二和第四个双引号内的所有内容或逗号之前和之后的所有内容。
答案 0 :(得分:4)
%norm! f,xdT{f}i,^R"
在上面的cmd中,^R
按ctrl-v ctrl-r
答案 1 :(得分:1)
:%s/{\([^,]*\),\([^,]*\)}/{\2,\1}/
那样的东西?
答案 2 :(得分:0)
这应该可以解决问题:
%s/\v("value":"[^"]+"),("tag":"[^"]+")/\2,\1/
使用"非常神奇"为了使事情更容易,保存两个组并使用反向引用替换它们。
答案 3 :(得分:0)