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

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

因为缺乏标准的安全性vino服务器,我改用x11vnc在我的 linux(带有 Xubuntu 14.04)盒子上 SSVNC在窗户一侧。

使用 vino,从 Windows 剪切并粘贴到 Linux 和 Windows,在两个方向上都是不稳定的(1),但当它起作用时,它对每个程序都起作用;我可以毫无问题地使用vim寄存器。"+我跑(2)

autocutsel -fork 

通常,“中键单击”和 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

脚注:

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

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

答案1

由于我不知道您使用的是哪个 x11vnc(我有三个不同的版本,还有其他版本),这是解决此特定问题的教程。

首先是了解所涉及的剪贴板。在大多数情况下,涉及其中四个。 (如果使用剪贴板管理工具,还可以实现更多功能。)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 剪贴板很难直接查看,也没有直接用处,因为它通常不存储数据,只存储元数据。)回答这些问题:每个应用程序使用哪个剪贴板?它们的使用顺序是什么?

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

相关内容