Vim按顺序猛拉/替换

前端之家收集整理的这篇文章主要介绍了Vim按顺序猛拉/替换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目的

>拉一条线并用它来覆盖它后面的“一些”线.

假设

在这种情况下,最好手动选择要应用替换的行.即不需要自动查找和替换.

比喻

将此过程视为从文本行创建“标记”并浏览项目列表,每个项目是“标记”行后面的一行文本,并决定是否应使用内容覆盖该行. “盖章”与否.如果是这样,请用“标记”替换该行.

最后一步,即用光标内容触发删除/替换光标下的行,应该尽可能简单,最好像按下一样容易. (重复上一次更改)或@@(执行宏寄存器@的内容).

问题

简单的工作流程:

>将光标定位在要复制的行上(使用移动命令)
> V(按行开始可视模式)
> y(将文本拖入未指定的寄存器)
>手动将光标定位到要替换的行上(使用移动命令)
> V(按行开始可视模式)(选择要替换的文本)
> p(将光标放在未指定的寄存器中)

如果多次应用则不起作用.

具体来说,替换文本会覆盖包含最初复制的行的寄存器,并打算用作“戳记”.

我试过的

我已经尝试使用“_y来拉动或删除到命名寄存器”下划线“,避免丢失邮票的内容,但我正在寻找一些最终快速和舒适的东西,因为我手动浏览列表并在我认为合适的地方申请替换.

我不想使用什么

如果我可以帮助它,我宁愿不使用宏或“重新映射”.

说明性示例文件

请参阅下面的示例起始文件,然后是所需的最终阶段,以进一步明确.

示例文件,启动条件

在这个阶段,我选择蓝莓,并把它作为我的“邮票”.

blueberry

apple
banana
coconut
apple
banana
coconut
apple
banana
coconut

样本文件,所需的最终状态

在列表中移动之后,我已经应用了一些替换,使用某些行的“顶部”“戳”,使它们与“戳”行相同.

blueberry

apple
banana
blueberry
apple
banana
coconut
apple
banana
blueberry
为了使您的工作流按预期工作,您需要粘贴前一个yank寄存器“0,而不是默认寄存器.

因此,使用Vy(或yy,它是相同的)像以前一样拉动第一行,然后将光标放在要替换的行上,并执行

V"0p

这会将当前行替换为先前被拉动的文本,但不会覆盖被拉动的文本.我希望我理解正确!

编辑1:使用宏重复

我很惊讶这个操作使用.不可重复,但这可能是由于使用了可视模式.要使用宏重复操作,请执行以下操作:

qqV"0pq

然后按@q或@@重复宏.

编辑2:重复使用.

这是尝试使用它可重复.不使用视觉模式.在拉出标记行并移动光标后,执行以下操作:

"_S<c-r>0<delete>

使用插入模式< c-r>命令插入寄存器0的内容.注意< delete>是必要的,因为邮票行包含回车.如果没有(即使用y $而不是yy进行yanking)< delete>可以省略.

原文链接:https://www.f2er.com/bash/384951.html

猜你在找的Bash相关文章