vim - 如何在 VIM 中重复复制粘贴?
问题描述
我正在编辑一些 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
,可能是另一个带有缩进的多行块,而不仅仅是单行数据。
非常感谢。
解决方案
使用:help :global
and :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
进入视觉线模式并将其扩展到 next 上方的行field2
。同样,使用适合您的任何模式。"0]p
将寄存器中的文本0
放在视觉选择上,尊重选择的第一行的缩进。
推荐阅读
- react-native - 为移动应用程序开发学习 react-native 的最佳方法是什么?
- asp.net - 如何创建会话类型列表并在此列表会话中添加对象?
- sharepoint - 如何获取适合 .NET Sharepoint API 使用的文档 URL?
- go - TLS 客户端服务器的证书链验证,无需服务器名验证
- logging - 如何在 Nightwatch.js Report.Html 中显示控制台中出现的所有输出和我的日志
- sql-server - 如何计算用户根据 PreviousOrderID 或/和 NextOrderID 修改订单的次数
- ms-access - 如果语句在 ms-access 2016 中出错
- javascript - css 组合无法获得我的图像的输出
- python - 为什么 __set_name__ 不会为 StringField/flask_wtf 调用
- batch-file - 如何在 Automation Anywhere 中的任何 BOT 启动之前关闭 Chrome、IE、Excel、Word、记事本等的多个页面?