使用带有 yiw 和 di 的 VIM 进行复制和粘贴行为

问题描述 投票:0回答:2

我尝试用

dog
复制
yiw
并使用
cat
di"
替换为
P

问题是,当我使用

di"
时,它会覆盖
dog
缓冲区。

起点:

dog
debugPrint("cat");
debugPrint("cat");
debugPrint("cat");
debugPrint("cat");

预期结果:

dog
debugPrint("dog");
debugPrint("dog");
debugPrint("dog");
debugPrint("dog");

我设法使用此方法获得预期结果(但我发现它太复杂而无法重复):

复制

dog
注册
a
"ayiw
然后使用
cat
替换
di"
并粘贴为
"aP

vim
2个回答
1
投票

我建议使用

:%s
将猫替换为狗,因为
di"
然后
P
需要太多时间。

:%s/cat/dog/

0
投票

其实你可以使用黑洞寄存器(

"_
)。

  1. 黑洞寄存器“_
    当写入该寄存器时,没有任何反应。这可以用来删除 文本而不影响正常寄存器。当读取该寄存器时, 什么都没有返回。

你需要做什么:

  1. 走狗线和狗词,
    yiw
    - 猛拉内心的词。
  2. 转到下一行。
    "_di"P
    • "_
      表示黑色寄存器。
    • di"
      表示“d”elete、“i”nside、引号
    • P
      表示将寄存器值放在光标前

如果第二步中有超过 3 行,这里有一个更快的方法:

qa"_di"Pjq
,然后
3@a

  • qa
    用于将宏录制到寄存器 a 中。
  • "_di"P"
    与第二步相同。
  • q
    用于停止录制。
  • 3@a
    用于执行寄存器内容
    three
    (无论你想要什么)次。
© www.soinside.com 2019 - 2024. All rights reserved.