gpt4 book ai didi

vim - 如何在 Vim 中使用相同的文本一次又一次有效地粘贴多行?

转载 作者:行者123 更新时间:2023-12-04 08:36:35 27 4
gpt4 key购买 nike

客观的
猛拉一行并用它覆盖它后面的一些行。
假设
在这种情况下,最好手动选择要应用替换的行。换句话说,不需要自动查找和替换。
比喻
把这个过程想象成从一行文本创建一个“印记”并浏览一个项目列表——每个项目都是“印记”行后面的一行文本——并决定是否应该使用该行的内容覆盖该行“戳”与否(当然,在前一种情况下,用“戳”替换该行)。
触发用图章内容替换光标下的行的最后一步应该尽可能简单;最好,就像按下 一样简单. (重复上次更改)或 @@ (执行宏寄存器 @ 的内容)。
问题
当然,简单的工作流程如下。

  • 将光标定位在要复制的行上(使用移动命令)。
  • 进入逐行可视模式(通过 V 命令)。
  • 复制所选文本(使用 y 命令)。
  • 手动将光标定位到要替换的行上(使用移动命令)。
  • 再次进入可视模式以选择要替换的文本(使用 V 命令)。
  • 粘贴选择(使用 p 命令)。

  • 但是,当必须多次进行替换时,这种方法不起作用。具体来说,替换第 6 步中的文本会覆盖(未命名)寄存器,其中包含最初复制并打算用作“标记”的行。
    我试过的
    我试过使用 "_y猛拉或删除到 _注册,避免丢失邮票的内容,但我正在寻找最终能够快速和舒适地键入的东西,因为我手动浏览列表并在我认为合适的地方应用替换。
    我不想使用什么
    如果可以的话,我宁愿不为此使用宏或“重新映射”。
    说明性示例文件
    请参阅下面的示例起始文件,然后是所需的最终阶段,以进一步清晰。
    示例文件,起始条件
    在这个阶段,我选择了 blueberry并让它成为我的“邮票”。
    blueberry

    apple
    banana
    coconut
    apple
    banana
    coconut
    apple
    banana
    coconut
    示例文件,所需的最终状态
    在遍历列表后,我应用了一些替换,在某些行上“加盖”,使它们与“标记”相同 blueberry线。
    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 猛拉),则 <delete>可以省略。

    关于vim - 如何在 Vim 中使用相同的文本一次又一次有效地粘贴多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547369/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com