我正在创建一个json文件,并且已经研究了如何将双引号等附加到适当的行,但我需要知道如何用花括号包裹每2行。
例如:
"value": "Bahraini Foreign Ministry"
"tag": "project:bahrain;id:2201",
"value": "Bahraini Foreign Minister"
"tag": "project:bahrain;id:2202",
需要:
{
"value": "Bahraini Foreign Ministry"
"tag": "project:bahrain;id:2201",
},
{
"value": "Bahraini Foreign Minister"
"tag": "project:bahrain;id:2202",
},
我尝试了:%norm
和:%s
,并在这里绕圈子。任何想法都表示赞赏!
答案 0 :(得分:2)
dNitro's solution是一种方法。这是另一种方式:
qqqqqqO{<esc>jjo},<esc>j@qq@q
这会创建一个递归宏,例如一个自称的宏。由于递归宏一直运行直到它们遇到错误,并且在最后一行调用j
会引发错误,这将适用于任何数据大小。说明:
qqq
清除注册表&#39; q&#39;。 qq
开始在注册表中记录&#39; q&#39;。 O{<esc>
在当前行上方的行上插入一个括号。 jj
向下移动(使用&#34;标记&#34;在其上)。 o},<esc>
在当前行之后的下一行放置一个括号。 j@q
使用&#34;值&#34;,然后@q
调用&#39; q&#39;宏。因为你录制时它是空的,所以它实际上什么也做不了。但是,一旦你点击q@q
,这将停止录制,然后调用此递归宏。
另一种选择是使用:global
命令,例如
:g/value/normal O{^[jjo},
请注意,^[
是一个文字转义字符,您必须按&#34; ctrl-v,ctrl-esc&#34;
这基本上是相同的,除了使用宏之外,它会在&#34; normal&#34;之后自动应用一组击键。到包含文本&#34;值&#34;的每一行。
只是为了好玩,这是最后一个选择,一个替代命令:
:%s/.*"value".*\n.*,/{\r&\r},,
这将替换第一行包含文本"value"
的两行,并在括号中包含相同的文本。