无法从Vim复制到系统剪贴板


54

如标题中所述,我无法从vim复制到系统剪贴板。Viceversa可以正常工作,可以从外部vim复制并粘贴p

我已经安装了剪贴板支持,vim版本是7.3.429:

$ vim --version | grep clip
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+xsmp_interact +xterm_clipboard -xterm_save 

我有:

set clipboard=unnamedplus

在我中.vimrc,它是在我执行以下操作时设置的:

set clipboard?

要么

:echo has('clipboard')

我正在使用Ubuntu 12.04 LTS和vim内部gnome-terminal(但GVim也存在相同的问题)。任何想法?

谢谢


stackoverflow.com/questions/11489428/…这可能会对您有所帮助。
coteyr

你退出输入“+ Y视觉选择,并试图粘贴外VIM之间VIM如果你这样做是行不通的?
塞缪尔·彼得

@SamuelPeter不,我没有退出vim
gc5

1
我遇到了这个问题,因为我clipboard+=unnamedplus在默认设置中设置了某些功能以将其禁用。更改为clipboard=unnamedplus(例如删除其他设置)对我有用。
JonnyRaa

正如@JonnyLeeds所提到的。使用yp共享系统剪贴板时,config set clipboard+=unnamedset clipboard+=unnamedplus不起作用。== ; 在删除第一个之后,它是and ,并且可以正常工作!==:set clipboard?clipboard=autoselect,exclude:cons\|linux,unnamed,unnamedplus+set clipboard=unnamedset clipboard+=unnamedplus:set clipboard?clipboard=unnamed,unnamedplus
Marslo

Answers:


87

这对我有效(Ubuntu 13.10):

将vim重新安装为vim-gtk:

sudo apt-get install vim-gtk

使用鼠标选择您想要的内容-然后键入以复制到剪贴板

"+y

从剪贴板类型粘贴到vim

"+p

我不知道为什么,但是比较show的输出vim --version表明,与vim-gtk相比,通常的vim安装受到很大限制。用vim-gtk替换vim不会影响任何插入。


更多信息:


1
我无法表达您对我有多大的帮助,现在我有多快乐:D
7hi4g0 2014年

1
有趣的是,在14.04上,常规VIM和VIM-GTK均受xterm_clipboard支持,但"+p在常规VIM中不起作用。与其剪切到剪贴板,不如增加所选行的锯齿度。
dotancohen 2014年

1
安装vim-gtk最终在14.04.4中对我有用,但是我经历的经历与其他评论有所不同。在vim-gtk安装之前,vim正在显示-xterm_clipboard(即未启用)。安装vim-gtk后显示(+ xterm_clipboard)。我正在用进行检查vim --version | grep clip。无论如何,您需要有道理+xterm_clipboard
仔细考虑了

这是一个很好的解决方案。实际上,在安装新的Ubuntu OS之后,这是我要做的第一件事。
linbianxiaocao

安装vim-gtk对我有用。谢谢
Miguel Mota

6

我将在下面保留原始答案,因为这对于其他搜索此问题的人可能很重要。

简而言之,似乎并没有一个适合所有答案的大小,但是对于'set剪贴板= unnamedplus','* p'或'+ p'之一应可从“系统”剪贴板中使用。

'* p'几乎可以肯定是您想要的那个。(从这里


vim是一个cli程序。在gnome-terminal(或任何终端仿真器)中使用它时,crtl + c(或任何组合键)首先由终端仿真器处理,然后由Shell处理,然后由程序(在这种情况下为vim)处理。vim和ctrl + c几乎肯定不会工作,因为ctrl + c向运行中的任务发送SIGINT信号。vim使用SIGINT来停止其他事情,例如中止插入模式或停止搜索功能。

换一种说法。Ctrl + C从未真正传递给VIM。SIGINT传递给VIM。SIGINT在vim中还有其他用途,因此使用复制可能行不通(即使您可以强制使用,也不是一个好主意)。

而是尝试坚持使用Ctrl + Shift + C和Ctrl + Shift + V(还有其他功能,但我相信那些会将文字放在系统剪贴板中)

公平地说,我对gvim不太了解。


也许我很困惑..我说过使用ctrl-cOUTSIDE vim和进行粘贴p,但是在vim中,我知道我必须使用y..我将编辑我的问题
gc5 2013年

1
大声笑还没有我的咖啡因,对不起。
coteyr


3

除了可接受的答案之外,如果您正在通过SSH进行远程工作(例如,tmux在多个窗格vim之间进行复制,而这些窗格之间要复制不同的进程),则还需要导出X显示,因为vimxterm-clipboard用于在不同进程之间进行接口。您可以通过运行设置X显示

export DISPLAY=:0.0

它必须在启动之前 vim以及在您拥有的任何其他shell下运行。


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.