Vim(终端)-在挂起时复制到X剪贴板并粘贴

4
我已经安装了vimx,因此我可以使用"+y等命令将文本复制到x剪贴板中,只要我能保持当前的vimx运行状态,这个方法就很有效。 但是,我也希望能够使用ctrl-z切换到当前正在运行的shell,并能够将从vim中复制的文本粘贴到shell中。有人知道如何做到这一点吗?因为一旦我使用ctrl-z暂停了vim,x剪贴板就会变为空,直到我再次将vim放回到fg中。

我不知道这是否有效,但你可以尝试使用:sh而不是ctr-z。 - Jay
@webde:不要使用 not-programming-related(与编程无关) 标签。反标签是有效的吗? - Roger Pate
2个回答

2

好的,

在头疼了大约一个小时处理这个问题之后,我决定采用不同的方法来完成同样的事情。

我将详细介绍我所做的事情,以便于那些遇到相同问题的人受益。

如果你的系统上有wxcopy,那么它已经足以让你的vim和其他应用程序之间具备复制/粘贴支持。如果你想从vim中复制文本,请使用vV或您喜欢的任何其他方法选择文本,然后使用命令:tee >(wxcopy)。这将把代码复制到旧式的X11剪贴板中。这个剪贴板的额外好处是,它不需要父应用程序运行才能进行粘贴,因此我的问题解决了。

我意识到可能很难获取到wxcopy,在Fedora上提供它的包是:

WindowMaker


xclip应该可以胜任此任务,您无需安装WindowMaker。Xclip是一个漂亮的小型X11应用程序,不应依赖于您的窗口管理器。我之前不知道这个,实际上相当巧妙。 - dlamotte

1

这不是一个答案,而是一个指引方向的推动,但是从这里开始:

:help quoteplus
:help x11-cut-buffer

具体来说,第二个帮助文本中有一些关于挂起vim的有趣注释。它声称将缓冲区写入PRIMARY和CUT_BUFFER0,因此在挂起后仍然可以使用中键单击。也许您已经删除了它们或插件正在干扰?也许您正在运行旧版本的vim(我正在运行7.2.182)。

我的建议是禁用所有手动安装的插件,尝试使用原始的vim。如果这样不起作用,请考虑使用vim的-V(详细)标志,并查看它是否会在实际挂起之前将缓冲区放入PRIMARY或CUT_BUFFER0。

我没有使用X(vimx)编译vim,因此无法自己测试。希望这能让您朝着正确的方向前进。


谢谢,我仔细阅读了那一部分,似乎vim应该在缓冲区变为挂起或不可用之前将其移动到X剪贴板中,但在我的系统上却没有。要么文档有误,要么我的设置有问题。我没有安装任何插件,我能想到的就是我可能在我的vimrc文件中做了一些有趣的事情。 - ldog
@gmatt 使用 -V 命令有什么发现吗?你的 .vimrc 文件是什么样子的? - dlamotte
抱歉回复晚了,我尝试了纯净版的vimx,没有更改vimrc或插件,但仍然遇到相同的问题,看起来文档是错误的。 - ldog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接