Vim:一条命令在缓冲区之间复制文本

8
如果我想将17-19行复制到33行,可以使用如下命令一次性完成:
:17,19t33

如果目标是另一个打开的 Vim 缓冲区,有没有相应的方法来完成这个操作呢?比如说,如果我想要将当前缓冲区的第 17 行和第 19 行复制到缓冲区 #2 中,有没有一种不需要先复制并切换到目标缓冲区再粘贴的方法?
需要注意的是,通常我会将源文件和目标文件放在同一个窗格中。

通常的“vim方式”是通过将文本附加到命名寄存器(例如“Ayy”)来构建文本。最终,您会想要切换到该缓冲区,然后粘贴内容。这种方法有什么不好的理由吗? - Peter Rincker
@PeterRincker 从语义上讲,我的大脑将其构想为一步操作(从此缓冲区复制文本到那个缓冲区),因此我希望能够在一步操作中执行它,而不是三步操作(复制、切换缓冲区、粘贴)。我在原始问题中没有提到这一点,但通常情况下,我希望在拆分的两个文件中都打开时执行此操作。 - Lorin Hochstein
1个回答

5

链接调用是否算作一行代码?例如:

:17,19y | b# | 33put | b#

不是很复杂,但应该能达到目的。我使用b#来方便操作。

感谢Peter指出我的错误--我将初始缓冲区切换移到了最后。


2
这个“pulling”文本不是“sending”文本。我认为你正在寻找像这样的东西:17,19y | b2 | 33pu | b#。你可能还想设置“hidden”或使用:hide - Peter Rincker
@guessimtoolate,你能详细解释一下你的答案并说明给定参数的作用吗?例如 b#33put,我以前从未见过。 - Pascal Precht
b# 命令将当前缓冲区更改为上一次使用的缓冲区,33put 命令将 " 寄存器的内容粘贴到第 33 行。管道符号 | 用于按顺序链接命令。 - guessimtoolate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接