我正在编辑一些 json 文件,我想在多个位置替换相同的字段。我正在使用 VIM,我不确定什么是快速简便的方法。例如:
data1:
field1:
{Some data}
field2:
{Some data}
data2:
field1:
{Some data}
field2:
{Some data}
data3:
field1:
{Some data}
field2:
{Some data}
data3:
field1:
{Some data}
field2:
{Some data}
我想通过粘贴所有条目来用其他内容替换 field1: {some data}
。我怎样才能做到这一点?某种粘贴和重复会很好。请注意,some data
可能是另一个带有缩进的多行块,而不仅仅是一行数据。
非常感谢。
答案 0 :(得分:0)
只需使用全局替换 :%s/field1: {some data}/something else
即可。
或者实际上,由于 field1:
和 {Some data}
不在同一行上,因此类似于 :%s/field:\n\s\+{Some data}/something else
(\n
匹配换行符,而 {{1} } 一个或多个空白字符)。
有关详细信息,请在 vim 中执行 \s\+
。
答案 1 :(得分:0)
对于 :help :global
和 :help :normal
,假设您要“粘贴”的内容是最后删除的内容:
:g/field1/normal V/field2/-^M"0]p
使用 ^M
获得 <C-v><CR>
。
分手:
:g/<pattern>/<command>
在匹配 <command>
的每一行上执行 <pattern>
。field1
是您的 <pattern>
,匹配包含 field1
的每一行。我会让您自行确定适合您实际用例的正确模式。normal ...
从命令行执行以下正常模式宏。V/field2/-^M
进入视线模式并将其扩展到下一个 field2
上方的行。同样,使用适合您的任何模式。"0]p
将寄存器 0
中的文本放在视觉选择上,尊重选择第一行的缩进。