vim/gvim 未能將 X11 剪貼板放入寄存器“+ 或”*?
由於標準 vino 伺服器缺乏安全性,我切換到在我的 linux(使用 Xubuntu 14.04) 機器上使用x11vnc ,在 Windows 端使用SSVNC。
使用vino,從windows到Linux和windows的剪切和粘貼,在兩個方向上都是不穩定的(1)但是當它工作時,它適用於每個程序;我可以毫無問題地使用
vim
寄存器。"+
我跑(2)autocutsel -fork
通常這樣“中間點擊”和 ctrl-c/v 選擇是相同的。
現在我使用 x11vnc(用: 呼叫
x11vnc -forever -repeat -safer -usepw -ssl -autoport 6000
)來建立一個安全、加密的連接,出現了一個問題:
- 我可以在 Windows 上複製並粘貼到遠端 linux 終端、libreoffice 等。沒有任何問題,雙向。
- 在
vim
, 或gvim
, 任何粘貼的嘗試"+p
或"*p
說E353: Nothing in register *
- 再次在
vim
orgvim
中,相反的方法確實有效:如果我"+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) 我試過有無。沒有變化。
由於我不知道您使用的是哪個 x11vnc(我有三個不同的版本,還有其他版本),所以這是一個解決此特定問題的教程。
首先是了解所涉及的剪貼板。在大多數情況下,其中涉及四個。(如果您使用剪貼板管理工具,更多可能。) X11 定義了三個剪貼板:主要、次要和剪貼板。Secondary 很少使用,(幾乎可以肯定不是你的問題)所以我們將忽略它。使用中鍵粘貼(xterm 等)的應用程序通常使用主剪貼板。執行 Windows 樣式粘貼(點擊編輯、點擊粘貼或控制 V)的應用程序有時僅使用剪貼板剪貼板。一些應用程序兩者兼而有之(Google瀏覽器通過中鍵從主要粘貼和從剪貼板通過控制項 V 粘貼)。接下來是 VNC 剪貼板(只有一個),還有 windows 剪貼板。(如果您使用的是在 X11 上執行的 vnc 查看器,事情會變得更加複雜,但在考慮到這一點之後,這將是有道理的。) VNC 剪貼板的特殊之處在於它跟踪其他剪貼板的各種更新,以使它們保持最新。如果您忽略主剪貼板,這相當簡單,因為最近更新的剪貼板被複製到所有其他剪貼板。挑戰在於主剪貼板的期望行為沒有很好地定義。我已經看到了各種 vnc 實現的以下行為:
- 忽略主要,僅使用剪貼板。
- 忽略剪貼板,僅使用主要的。
- 使用最新的 unix 到 windows 副本,copy to both for windows 到 unix 副本。
- 盡量聰明:在使用剪貼板之前只使用主要的,然後只使用剪貼板。
- 嘗試更聰明:使用主要直到剪貼板被更改然後忽略主要直到從視窗發生變化,然後使用下一個更改,在剪貼板使用後再次忽略主要。
- 嘗試變得更聰明。(我從來沒有弄清楚他們想用這個做什麼,但通常它做了正確的事情)
接下來是工具。我認為有兩個工具對於調試剪貼板問題至關重要:文本編輯器(記事本可以很好地解決這個問題)和 xclip。Windows 剪貼板查看器很好,但不是必需的。
現在的過程:從您正在排除故障的組中的每個應用程序中,選擇並複制一些文本,檢查所有三個可訪問剪貼板的狀態。(vnc 剪貼板很難直接查看,也沒有直接用處,因為它通常不儲存數據,只儲存元數據。)回答這些問題:每個應用程序使用哪個剪貼板?他們使用什麼順序?
希望這是足夠的資訊來幫助您入門。