vim/gvim 无法将 X11 剪贴板放入寄存器“+ 或”*?

Rma*_*ano 15 vim vnc x11 clipboard

由于标准vino 服务器缺乏安全性,我改用x11vnc在我的 linux(使用 Xubuntu 14.04)机器和 Windows 端的SSVNC

使用 vino,从 windows 剪切和粘贴到 Linux 和 windows,在两个方向上,是 flaky(1) 但是当它工作时,它适用于每个程序;我可以毫无问题地使用vim寄存器"+。我跑(2)

autocutsel -fork 
Run Code Online (Sandbox Code Playgroud)

通常这样“中键”和 ctrl-c/v 选择是相同的。

现在我使用 x11vnc(用 : 调用x11vnc -forever -repeat -safer -usepw -ssl -autoport 6000)来建立安全的加密连接,出现了一个问题:

  1. 我可以在 Windows 上复制并粘贴到远程 linux 终端、libreoffice 等,没有任何问题,双向。

  2. vim, 或gvim, 任何试图粘贴"+p"*pE353: Nothing in register *

  3. 再次在vimor 中gvim,相反的方式确实有效:如果"+yy我可以将内容粘贴到 Windows 端。

任何人都知道这个问题?奇怪的是粘贴在我检查过的任何地方都有效,但在vim......

Package                 Installed       Previous        Now             State
=======================-===============-===============-===============-=====
vim                     2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  install
vim-gnome               2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  2:7.4.052-1ubuntu3  install
Run Code Online (Sandbox Code Playgroud)

脚注:

(1) 现在找不到bug --- 报告了。它会在一段时间后停止工作。

(2)我试过有没有。没有变化。

hil*_*red 1

Since I do not know which x11vnc you are using (I have three different versions, there are others) this is a tutorial to troubleshoot this specific problem.

首先是了解所涉及的剪贴板。在大多数情况下,涉及其中四个。(如果使用剪贴板管理工具,还可以实现更多功能。)X11 定义了三个剪贴板:主剪贴板、辅助剪贴板和剪贴板。次要很少使用(并且几乎肯定不是您的问题),因此我们将忽略它。使用中键单击进行粘贴的应用程序(xterm 等)通常使用主剪贴板。执行 Windows 样式粘贴(单击编辑、单击粘贴或 Control V)的应用程序有时仅使用剪贴板剪贴板。有些应用程序同时执行这两种操作(Google Chrome 通过中键单击从主窗口粘贴,并使用 Control V 从剪贴板粘贴)。接下来是 VNC 剪贴板(只有一个),还有 Windows 剪贴板。(如果您使用的是在 X11 上运行的 vnc 查看器,事情会变得更加复杂,但考虑一下这一点后就会有意义。)VNC 剪贴板的特殊之处在于,它会跟踪其他剪贴板的各种更新,以使它们保持最新状态。日期。如果您忽略主剪贴板,这相当简单,因为最近更新的剪贴板将复制到所有其他剪贴板。挑战在于主剪贴板的所需行为没有明确定义。我见过各种 vnc 实现的以下行为:

  1. 忽略主要内容,仅使用剪贴板。
  2. 忽略剪贴板,仅使用主剪贴板。
  3. 使用最新的 unix 到 windows 副本,复制到 Windows 到 unix 副本。
  4. 尽量聪明一些:仅使用主设备,直到使用剪贴板,然后才使用剪贴板。
  5. 尝试变得更聪明:使用主项直到剪贴板发生更改,然后忽略主项直到 Windows 发生更改,然后使用下一个更改,在使用剪贴板后再次忽略主项。
  6. 尝试变得更聪明。(我从来不知道他们想用这个做什么,但通常它做了正确的事情)

接下来是工具。我认为有两个工具对于调试剪贴板问题至关重要:文本编辑器(记事本可以很好地解决此问题)和 xclip。Windows 剪贴板查看器很好,但不是必需的。

现在的过程是:从要排除故障的组中的每个应用程序中,选择并复制一些文本,检查所有三个可访问剪贴板的状态。(vnc 剪贴板很难直接查看,也没有直接用处,因为它通常不存储数据,只存储元数据。)回答这些问题:每个应用程序使用哪个剪贴板?它们的使用顺序是什么?

希望这些信息足以帮助您入门。