我正在尝试从vim复制粘贴一些文本。我正在执行v进入可视模式,然后在选择块后输入y。

似乎将文本复制到vim的剪贴板中,因为p会将其粘贴。
但是在另一个程序中(例如Chrome),右键单击->粘贴不会粘贴正确的文本。如何将文本复制到正确的剪贴板?

#1 楼

仅当vim --version指示您具有+xterm_clipboard功能时,以下内容才有效。如果没有,您将必须安装额外的软件包或添加该功能重新编译vim。


实际上有两个选择:

"+y


复制到“常规”剪贴板缓冲区(因此您可以使用Ctrl + V粘贴,右键单击并选择“粘贴”等),而

"*y


复制到X11选择-您可以使用中键单击从该缓冲区粘贴。

请注意,"*"+可以同时使用。因此,如果您在另一个应用程序中选择了一些文本,则可以使用"*p将其粘贴到vim中;如果您复制了一些文本(使用Ctrl-C),则可以使用"+p将其粘贴到vim中。

评论


@Tshepang它不能从腻子中起作用。我该怎么办 ?

–拉胡尔·帕蒂尔(Rahul Patil)
13年4月10日在2:54

@RahulPatil我不知道;也许会问一个单独的问题,也许是在超级用户上(因为它是Windows工具,所以在那儿会受到更多欢迎)。

– tshepang
2013年10月10日下午5:19

@RahulPatil-如果您使用腻子,那么您是在远程服务器上而不是在本地计算机上编辑文件。通常,远程服务器不会知道本地计算机上的剪贴板。如果您使用的是Linux桌面,则可以使用X转发进行ssh(前提是您已在服务器上安装了X库),但是由于腻子在Windows上运行,因此您没有X运行,因此无法转发它。

–汉米·唐纳(Hamish Downer)
13年4月10日在11:32

大家好,如何键入“ + y?我应该在可视模式下还是在命令模式下键入它?这很愚蠢,但我无法弄清楚。

–艾琳·比洛(Alind Billore)
16 Jun 15'12:38



@AlindBillore:在命令模式下。从字面上看,先按shift键,然后按shift =键,然后按y键(当然不是一次,一次又一次,当然除了移位之外)。

–里德
17-3-30在18:39



#2 楼

如果您使用的vim> = 7.3.74,则可以将其实际放入vimrc中:

set clipboard=unnamedplus


哪个会自动使用+缓冲区(系统剪贴板)默认。然后要拉动(复制),只需使用常规的y命令,以此类推。

我发现此行为相当令人讨厌,因为像d这样的命令会将其操作的文本放入默认缓冲区中,例如,这意味着我无法快速执行dd并从互联网粘贴一条线路。

评论


+是剪贴板规例

– Kit Ho
13年8月8日在8:23

关于您的最后一点,dd的意思是“剪掉一条线”,因此这是预期的行为。在极少数情况下,当您想删除某行而被遗忘时,“ _ dd可以解决问题。

–user7089
2014年4月24日0:38在

也正如@HamishDowner在其答案中指出的那样:仅当vim --version指示您具有+ xterm_clipboard功能时,以下内容才有效。如果没有,您将必须安装额外的软件包或使用添加的功能重新编译vim。

–rudolph9
17 Mar 30 '17:15



#3 楼

按住Shift键并使用鼠标光标选择文本。
文本将被复制到剪贴板。

这也适用于从剪贴板粘贴到vim中。

要清楚,这适用于在诸如vim之类的终端中运行的xterm

评论


@LoopSpace用于多行选择,当启用设置nu时,这也会复制行号。因此,您可能希望使用某些快捷方式切换行号,或在每次选择之前运行:set nonu命令

–史蒂芬·普里比林斯基(Steven Pribilinskiy)
18年1月24日在14:34

在MAC上,按住Option键并用鼠标光标选择文本

– Abreschi
19-10-4在21:26

使用vim 8.0 + gnome-terminal对我不起作用

– jchook
19-10-26在21:09

解决方案与tmux等多窗格术语不兼容。

– Adrian Lopez
20年7月11日在13:18

这不会复制到剪贴板,而是复制到主剪贴板。请参阅剪贴板Arch Wiki文章中的区别。

–Quasímodo
20年8月4日在17:15

#4 楼

我发现很难使用标准"+gP"+y命令。因此,我重新映射了Ctrl-Y以便拖入剪贴板,并重新映射了Ctrl-P从剪贴板粘贴。将此添加到.vimrc

nnoremap <C-y> "+y
vnoremap <C-y> "+y
nnoremap <C-p> "+gP
vnoremap <C-p> "+gP


#5 楼

当我检查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”复制和粘贴了。

#6 楼

没关系,我找到了答案-它写在vim的菜单上。

"+y


非常直观。

评论


您正在使用gvim吗?

– nozimica
2011年5月3日16:14

@ nozimica-是的

–ripper234
2011年5月3日17:09

在xterm或在X下的类似终端仿真器中运行的vim中也可以使用该功能(如果vim是使用+ xterm_clipboard功能编译的)。

–吉尔斯'所以-不再是邪恶的'
2011年5月3日在21:02

#7 楼

仅添加一个非特定于vim的答案:您可以使用Ctrl+Shift+C复制到Ubuntu中的系统剪贴板(如果该功能是由终端仿真器提供的,则gnome-terminal提供该功能)。 Ctrl+Shift+V粘贴到另一个终端窗口,常规Ctrl+V粘贴到GUI应用。此外,如果在终端中选择文本,然后单击鼠标中键,将从X11剪贴板粘贴该文本。

评论


由于某种原因,它不起作用。只需在可视模式下选择,使用ctrl-shift-C复制,然后使用Ctrl-shift-V粘贴到另一个应用程序中即可?文本不会为我复制。

–ripper234
2011年5月3日23:14

@ ripper234:如果您使用的是gvim,则此方法不起作用。正如crazy2be所说,此功能来自您的终端仿真器。

–里德
2011年5月3日23:20

@ ripper234:1)它是终端仿真器提供的功能(其中一个是gnome-terminal提供的),2)Ctrl + Shift + V粘贴到终端上,GUI应用程序仍然照常使用Ctrl + V。我将编辑答案以使其更加清晰。

–crazy2be
2011年5月4日在2:41

如果您使用shift-ctrl鼠标拖动-选择文本,则从一个缓冲区窗口复制粘贴变得容易。

–史蒂芬(Stephan)
2011年11月3日,10:33

#8 楼

按住SHIFT键并用鼠标选择要复制的文本。
然后用CTRL + v粘贴到其他程序中。
可在我的Ubuntu 16.04终端上运行。不确定gvim和其他系统。


评论


那行不通。

–疯狂
17年6月14日在16:57

创造性的答案

–vidur punj
17年11月8日在12:00

#9 楼

默认情况下,如果安装vim的精简版本,则(+xterm_clipboard)上将没有vim --version | grep xterm功能,这是在vim外部使用*+寄存器所必需的。

要启用它,您必须自己编译vim或安装预启用的vim版本。我使用了vim-gnome:sudo apt-get install vim-gnome。如果执行vim --version | grep xterm,将会看到现在是+xterm_clipboard

现在,请尝试复制到+*,它应该可以工作。

#10 楼

只是要添加一下,如果有任何效果,请尝试切换包装vim的终端(如果从终端使用vim)。例如,我发现guake无法访问剪贴板,而从gnome-terminal可以访问剪贴板。

#11 楼

对于Ubuntu 14.04及更高版本:


只需选择要复制的文本。然后用鼠标单击中心滚动按钮,然后转到剪贴板
也在那里做同样的事情(用鼠标单击中心滚动按钮)。

两者都可以100%工作Ubuntu上的vimtail