如何在 vim 中将寄存器附加到剪贴板?

如何在 vim 中将寄存器附加到剪贴板?

我已经知道你可以使用以下命令复制一些内容到寄存器中:(加上复制、删除等命令)

"a

我还了解您可以使用以下命令将其附加到寄存器:

"A

此外,我还了解如何使用以下命令将某些内容复制到剪贴板寄存器:

"+

问题是我应该输入什么内容来附加到剪贴板寄存器?

编辑: 这可能不是必需的,但我的 VIM 版本是:

Vi IMproved 7.4(2013 年 8 月 10 日,编译于 2014 年 1 月 2 日 19:39:59)带有 GTK2 GUI 的大型版本。

答案1

你必须使用

:let @+ .= your_expression

堆栈溢出。正如您所理解的,问题在于您无法将字符大写+

例如,要将缓冲区中的一行添加到剪贴板,请将光标放在该行上,然后使用 将其拉出yy。然后键入:let @+ .= @0运行 ( :) 命令let以将 ( .=) 寄存器 ( @) 0(始终保存最后一次拉出的内容)附加到寄存器+(代表剪贴板)中。

例如,要将字符串“abc”添加到剪贴板,请键入:let @+ .= 'abc'

(要更改 X11 选择而不是剪贴板寄存器,+请使用寄存器*)。

vim 有一个巨大的命令集。如果您打算将其作为您最喜欢的编辑器,那么值得花些精力去了解其中的一些命令,至少是表面上的命令。大多数 vim 用户可能只使用大约十几个命令,并且对其真正的潜力不感兴趣。这很遗憾,因为这样的工具可以大大减少他们的工作量。

你可能会喜欢艰难学习 Vimscript. 内置 vim 帮助也可以在网上查看源码,此页面Vim 脚本语言

答案2

只能向 26 个命名寄存器a to z附加数据。但“未命名”寄存器"始终指向最后使用的寄存器。我们可以利用这一点,因为这也意味着附加到命名寄存器的数据也是附加到“未命名”的登记册。

以下是一个例子:

1| Line 1
2| Line 2
3| Line 3
  1. 扬克1号线"+yy
    • 用 检查寄存器:reg + "
    • 你会注意到它们都包含1号线
  2. 附加2号线通过键入来注册“a” "Ayy。 (或者使用您希望的任何命名寄存器)。
    • 用 检查寄存器:reg a + "
    • 注册+仍然与预期相同。
    • 注册a2号线附加到之前的内容中。
    • 注册"同时具有1号线2号线

:help 引用引用


附注:考虑将“未命名”寄存器设置为剪贴板,这样您就不必"+yy每次都输入。如果设置了,您只需yy将其拉到剪贴板即可。
:help clipboard
:help 'clipboard'
:help clipboard-unnamedplus
:help clipboard-unnamed

相关内容