我可以 cat 一个文件,用中间按钮或 shift-insert 复制和粘贴文本。
如何在 vim 中复制文本并从系统剪贴板粘贴?
答案1
您需要安装已编译clipboard
和功能的Vim xtermclipboard
。在 Ubuntu 中,这些功能仅在 vim GUI 包中可用(vim-gnome
、、等)。vim-gtk
vim-athena
一旦你安装了其中一个,你可以将文件复制到(并从)剪贴板寄存器中粘贴(*
和+
)。来自这篇非常有信息量的帖子Vi 和 Vim:
为了X11的系统(即Linux和大多数其他UNIX类似系统)有 2 个剪贴板,彼此独立:
- PRIMARY - 这是选择时复制的,可以用鼠标中键粘贴。
- 剪贴板 - 通常用 复制
^C
,用 粘贴^V
(类似于 MS Windows)。
Vim 有 2 个特殊寄存器与这些剪贴板相对应:
*
使用 PRIMARY;助记符:s焦油是s选举(用于复制s选)+
使用 CLIPBOARD;助记符:CTRL+C(用于通用键绑定)
要复制到寄存器,请在复制命令 ( y
)前加上"
和寄存器名称(*
例如 )。"*y
,然后单击鼠标中键进行粘贴,或单击"+y
和ShiftInsert进行粘贴。
答案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 复制到系统剪贴板:
- 安装
xclip
(sudo apt install xclip
) - 提取所需的行 - 这将存储在
"0
寄存器中 - 然后将
:call system('xclip -sel clipboard', @0)
内容复制到剪贴板。