无法从Vim复制到剪贴板


28

我在Linux Mint 13上运行Vim 7.3(使用MATE),但无法将文本保存到系统剪贴板。我在终端中运行Vim,并使用从终端复制文本CTRLINSERT。当我在Vim中选择文本时(无论是使用鼠标还是处于可视模式),CTRLINSERT都不会复制任何文本。另外,当我单击鼠标右键时,“副本”显示为灰色。此外,我无法通过使用vim命令拉到相应的寄存器来写入系统缓冲区。但是,我可以在插入模式下粘贴(使用SHIFTINSERT或右键单击粘贴)。我也可以使用相同的技术直接从终端复制文本,而不是从Vim复制文本。

这是我当前的〜/ .vimrc。相关部分最有可能set clipboard=autoselect,unnamed,exclude:cons\|linux。如果将我放在finish〜/ .vimrc的顶部,则会遇到相同的问题,因此我认为该行是错误的,但是我已经尝试过set clipboard=unnamed并具有相同的行为。

会有另一个配置文件影响Vim的行为吗?如何更改〜/ .vimrc以允许我从Vim复制文本?

Answers:


55

我相信您的复制问题是由以下原因引起的:

mouse=a 

在您的.vimrc中,每当您用鼠标选择某些内容时,这会将vim设置为可视模式。出于某种疯狂的原因,在可视模式下,不允许复制。您可以通过在选择不进入可视模式的文本时按住Shift键来解决该问题,从而允许您使用复制菜单。

或者您可以更改为:

:set mouse=v

然后复制将再次起作用。如果要永久保存,请将其添加到〜/ .vimrc文件中


2
尽管这实际上可以解决他们的问题,但对它起作用原因进行解释会更有用。没有它,您的答案就是告诉某人两次按下绿色按钮 -它可能会起作用,也许不会,但不会启发他们。
voretaq7 2012年

谢谢,解决了。您在voretaq7的评论后添加的说明也很有帮助!

这也适用于Cygwin。
戴夫·贾维斯

1
此模式将突出显示所有内容,因此,如果要复制几行,我还将复制行号和每行之后的所有空白区域,直到屏幕结尾。有一种方法只能让它选择相关的内容(时高亮显示的方式mouse=a)吗?
丹尼斯

好答案。只是一个加分:更多的鼠标模式在这里:help mouse
Beco博士

10

sudo apt-get install vim-gtk 可能会为其他Google员工解决此问题。

好的终端风格的vim不能访问剪贴板,后者是X Windows系统的一部分。安装vim-gtk使vim拥有修改和查看剪贴板所需的访问权限。


2
作品!在Debian Buster上(正在测试中),我安装了vim-gtk,然后在xterm中的命令行vim允许我使用*+缓冲区来访问x窗口缓冲区。vim-gtk安装使用De​​bian替代品set vim -> /usr/bin/vim.gtk
RobertL

0

终端对vim选择一无所知,所以不要指望它会有所帮助。您将需要针对X构建vim(例如gvim -v),然后将其拉到寄存器中并从+寄存器中放入。


3
vim-gtkUbuntu中的软件包包含剪贴板支持(即使vim在终端中执行时也是如此)。
mgorven 2012年

在Debian Buster上达成协议并确认(正在测试中),我安装了vim-gtk,然后在xterm中使用命令行vim允许我使用*和+缓冲区访问x窗口缓冲区。vim-gtk安装使用De​​bian替代方法设置vim-> /usr/bin/vim.gtk。
RobertL

0

gvim在arch linux上,如果有人想知道。另外,请查看neovim(和python-neovim&& python2-neovim为您完成我的支持,等等)。


尝试通过ssh使用gvim。
hopeseekr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.