vim 和系统剪贴板

vim 和系统剪贴板

我可以 cat 一个文件,用中间按钮或 shift-insert 复制和粘贴文本。

如何在 vim 中复制文本并从系统剪贴板粘贴?

答案1

您需要安装已编译clipboard和功能的Vim xtermclipboard。在 Ubuntu 中,这些功能仅在 vim GUI 包中可用(vim-gnome、、等)。vim-gtkvim-athena

一旦你安装了其中一个,你可以将文件复制到(并从)剪贴板寄存器中粘贴(*+)。来自这篇非常有信息量的帖子Vi 和 Vim

为了X11的系统(即Linux和大多数其他UNIX类似系统)有 2 个剪贴板,彼此独立:

  • PRIMARY - 这是选择时复制的,可以用鼠标中键粘贴。
  • 剪贴板 - 通常用 复制^C,用 粘贴^V(类似于 MS Windows)。

Vim 有 2 个特殊寄存器与这些剪贴板相对应:

  • *使用 PRIMARY;助记符:s焦油是s选举(用于复制s选)
  • +使用 CLIPBOARD;助记符:CTRL+C(用于通用键绑定)

要复制到寄存器,请在复制命令 ( y)前加上"和寄存器名称(*例如 )。"*y,然后单击鼠标中键进行粘贴,或单击"+yShiftInsert进行粘贴。

答案2

我遇到了问题,因为我的 vim 不支持剪贴板

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

我安装了 vim-gnome(支持剪贴板)然后再次检查:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

现在我可以分别使用“+ y”和“+ p”进行复制和粘贴。

答案3

一个非常有趣的解决方案来自问题。安装 xclip,然后将命令的输出通过管道传输到 xclip(cat file | xclip -selection clipboard例如),然后将其粘贴到任何地方(如果是在终端中 - 使用Ctrl ShiftV )。现在,事实证明您实际上可以将该命令缩短为xclip -sel clip,这在阅读手册页或那里的示例中并不明显。

答案4

根据 Sergiy Kolodyazhnyy 的回答,如果您编译了没有xclip支持的 vim,请执行以下操作将内容从 vim 复制到系统剪贴板:

  • 安装xclipsudo apt install xclip
  • 提取所需的行 - 这将存储在"0寄存器中
  • 然后将:call system('xclip -sel clipboard', @0)内容复制到剪贴板。

相关内容