[英]Regex to find variables inside curly braces of a Python JSON string
[英]Vim regex to add curly braces every few lines
我正在創建一個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
並且在這里轉了一圈。 任何想法表示贊賞!
dNitro的解決方案是做到這一點的一種方法。 這是另一種方式:
qqqqqqO{<esc>jjo},<esc>j@qq@q
這將創建一個遞歸宏,例如調用自身的宏。 由於遞歸宏會一直運行直到遇到錯誤,並且在最后一行調用j
會引發錯誤,因此這適用於任何數據大小。 說明:
qqq
清除寄存器“ q”。 qq
開始記錄在寄存器“ q”中。 O{<esc>
在當前行上方的行上插入一個括號。 jj
向下移動(移至帶有“ tag”的行)。 o},<esc>
在當前行之后的下一行放置一個括號。 j@q
穿回用“價值”的線路,並@q
調用“Q”宏。 由於錄制時它是空的,因此實際上不會執行任何操作。 但是,一旦按下q@q
,它將停止記錄,然后調用此遞歸宏。
另一種選擇是使用:global
命令,例如
:g/value/normal O{^[jjo},
請注意, ^[
是字面轉義字符,您必須通過按“ ctrl-v,ctrl-esc”輸入
本質上是同一件事,除了使用宏之外,它自動將“正常”之后的一組擊鍵應用於包含文本“值”的每一行。
只是為了好玩,這是最后一個替代方法,一個替代命令:
:%s/.*"value".*\n.*,/{\r&\r},,
這將替換第一行包含文本"value"
兩行,並在方括號中包含相同的文本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.