如何向剪贴板添加内容

10

我知道如何将内容复制到剪贴板,但如何将内容添加到剪贴板中?

在我的代码中,我使用了以下代码:

let @+ =  my_expression

但这会覆盖剪贴板。

我知道可以使用寄存器 a-z 来进行追加:

let @B = my_expression

我想将内容添加到寄存器b,但如果我想要添加到剪贴板,应该怎么做呢?

2个回答

16

使用:

let @+ = @+ . my_expression

或更短:

let @+ .= my_expression

参考: :help :let.=


11
如果你不使用宏,建议查看寄存器:help registers非常惊人。
简单来说,有26个额外的“可定制剪贴板”,称为寄存器,您可以在其中存储文本,从a开始,到z通过按"键、命名寄存器(比如f),然后键入所需选择文本的动作,在命令模式下向寄存器添加文本。 注意:这里使用了命名为 F 的寄存器是因为它可能在您的左手食指下。也就是说,选择 f 仅仅因为它方便,您可以在整个过程中将 f 替换成 auz 等任何其他字符。

使用寄存器复制(光标位于 [T]):

初始文件状态

This is my first line.
[T]his is my second line. 
This is my third line.

在命令模式下输入"fyy,可以将寄存器填充为一行(yy)。

  • 输入p(*见下文)即可立即从默认寄存器中粘贴。
  • 输入"f选择f寄存器,然后输入pf寄存器直接粘贴。现在f和默认寄存器一样。

因此,在输入"fyyp与使用默认剪贴板输入yyp的结果完全相同。

结果

This is my first line.
This is my second line. 
[T]his is my second line. 
This is my third line.

向寄存器中添加内容:

使用大写字母来追加到现有的寄存器。

在上面的示例中,在粘贴后,按j向下移动一行,然后输入"Fyy。然后键入p进行粘贴。您已将“这是我的第三行。”追加到了f的内容中。

结果

This is my first line.
This is my second line. 
This is my second line. 
This is my third line.
This is my second line. 
[T]his is my third line.

(使用小写字母f会清空f的内容,最终只剩下"这是我的第三行。")

为什么在你复制到寄存器f后,p会立即粘贴出来?因为你的默认寄存器保存了对上次选择的指针,并且显然不仅仅保存了你添加到f中的内容,而是在附加时提取了f中的一切。更加详细地说,在第一种情况下,“键入“fyy”fp 的结果与使用默认剪贴板键入yyp完全相同。”

但是如果现在你将一个新行复制到默认寄存器中,您可以按"f选择f寄存器,然后按p粘贴先前的值。


虽然现在我已经学会了@+是剪贴板寄存器,以防万一。 - ruffin
那个踩的是为了什么?请评论,这样我就可以修复/整合/解决你的隐含批评。 - ruffin
1
OP 询问如何将内容添加到系统剪贴板,这与在 VIM 中添加到命名寄存器不同。 - DasEarl

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