我在 Windows 10 计算机上使用 VNC Viewer 5.3.2 (r19179) x64 连接到在 SUSE Linux Enterprise Server 11 上运行的 VNC Server(虚拟模式)5.3.2 (r19476) x64。我的问题与复制和粘贴有关。
我知道 Linux 有两个不同的剪贴板,PRIMARY 和 CLIPBOARD。如果我选择一些文本,它会被发送到 PRIMARY,我可以使用鼠标第三个按钮或使用 SHIFT+INSERT 粘贴它。但是,选择文本不应覆盖剪贴板。当用户选择文本,然后使用 CTRL-C 或右键单击复制进行复制时,将使用剪贴板。此后,如果我使用 CTRL-V 进行粘贴,它应该粘贴剪贴板中的内容,无论我是否在复制和粘贴操作之间选择了一些文本(更改了主文本)。
当我使用 VNC 连接到远程计算机时,所有这些都工作得很好:我可以使用 CTRL-C 复制一些文本,然后选择任何内容并使用 CTRL-V 粘贴以粘贴我使用 CTRL-C 复制的内容。但是,如果我在 VNC 查看器之外复制一些文本,即本地计算机 (Windows 10) 上记事本中的一些文本,然后在远程计算机 (SLES 11) 中选择一些文本并尝试粘贴它,它会粘贴我刚刚选择的内容,即使我使用 CTRL-V。
此时,主和剪贴板在我的远程计算机中变得混乱,直到我关闭会话并打开一个新会话。这意味着,如果我选择一些文本并按 CTRL-V,它就会粘贴我刚刚选择的文本。这变得非常烦人,因为如果我想复制某些内容然后将其粘贴到其他内容上,系统会粘贴我刚刚选择的内容,并且我会丢失刚刚创建的 CTRL-C。我不知道所选文本是否发送到 CLIPBOARD 或 PRIMARY,也不知道 CTRL-V 现在是否从 PRIMARY 或 CLIPBOARD 粘贴,但有些东西搞砸了。
我知道 VNC 查看器曾经有一个名为 SendPrimary 的选项,它可能会解决我的问题(看到这个),但我在 VNC Viewer 5.3.2 中找不到此选项。
答案1
刚刚从 Real VNC 团队得到了答案。显然,SendPrimary 选项仅在 Linux VNC Viewer 版本中可用。然而,最后,它已被转移到 VNC 服务器。因此,要禁用 SendPrimary 选项,您必须将以下行添加到.vnc/config.d/vncserverui-虚拟:
SendPrimary=0
如果你想全局禁用它,请将其添加到/etc/vnc/config.d/common.custom。
编辑:请注意,您需要重新启动 VNC 服务器才能生效。
答案2
剪刀位于 Linux 的右上角。右键单击并关闭默认剪贴板管理器,然后启动 Tigervnc 剪贴板管理器,如下所示:
$ vncconfig &
它将启动 TigerVNC 剪贴板。这样您就可以与本地和远程计算机共享剪贴板。
我已经在 Oracle Linux 上进行了测试和工作。