vim 高級用戶的問題:
file1.txt
Some list
- line 1
- line 2
Example of payload:
```json
{
"order_id": "ABC123",
"postcode": "A1 B22",
"items": [1, 2, 3]
}
```
More text follows.
我的目標是:
- 匹配介于
```json和之間的所有內容``` - 去掉那些前綴/后綴
- 并在每一行前面加上額外的空格(添加縮進)。結果是這樣的:
file2.txt
Some list
- line 1
- line 2
Example of payload:
{
"order_id": "ABC123",
"postcode": "A1 B22",
"items": [1, 2, 3]
}
More text follows.
到目前為止,我設法通過以下方式非貪婪地匹配 json 和反引號之間的所有內容:
%s/```json\(\_.\{-}\)```/\1/g
但是在每一行之前\1是一個完全不同的故事。
我嘗試過的事情是:
- 子匹配(即
%s/```json\(\_.\{-}\)```/\=submatch(1)/g) - 嘗試鏈式替換(但我不知道該怎么做)
任何幫助/建議?
uj5u.com熱心網友回復:
我會分兩步完成:
:g/```json/.,/```/s/^/ /
:g/```/d
第一步:
:g/<pattern>/<command><command>在匹配的每一行上執行<pattern>。```json是我們的<pattern>,其余的都是我們的<command>,一個簡單的替換。.,/```/是一個范圍,涵蓋從當前行., 到下一行的每一行```。s/^/ /基本上在行前加上 4 個空格。
這有效地縮進了整個圍欄塊:
```json
{
"order_id": "ABC123",
"postcode": "A1 B22",
"items": [1, 2, 3]
}
```
第二步:
:g/<pattern>/<command><command>在匹配的每一行上執行<pattern>,如上。```是我們的<pattern>。d是我們的<command>。
這有效地去除了無關的圍欄:
{
"order_id": "ABC123",
"postcode": "A1 B22",
"items": [1, 2, 3]
}
見:help :global。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/377526.html
上一篇:如何不反轉十進制數?
