Vim如何匹配```json块内容删除标记并为每行添加缩进?
解决方案
这里提供两种可直接使用的实现方案,均支持处理文件中存在多个JSON代码块的场景:
方案1:单次替换命令(一步完成)
直接在Vim中执行以下命令即可:
:%s/```json\(\_.\{-}\)```/\=substitute(submatch(1), '^', ' ', 'mg')/g
- 逻辑说明:
- 外层匹配逻辑和你已经实现的一致,非贪婪捕获
```json到```之间的所有内容 - 内层
substitute()处理捕获到的JSON内容,m标志开启多行匹配模式,让^匹配每一行的行首,批量给所有行开头添加4个空格
- 外层匹配逻辑和你已经实现的一致,非贪婪捕获
方案2:分步操作(逻辑更清晰,不易出错)
分两步执行,适合日常手动操作:
- 给所有
```json和```标记中间的内容行,每行开头加4个空格:
:g/```json/+1,/```/-1 s/^/ /
- 删除所有的
```json和```标记行:
:g/```json\|```/d
两种方案最终输出和你给出的预期效果完全一致。
内容的提问来源于stack exchange,提问作者Drachenfels
相关产品推荐
相关产品推荐

