解決遠程Linux X11窗口中“選中即復制”的問題


問題

最近一般用筆記本(Windows系統)遠程連接到服務器(Ubuntu系統)上進行開發。代碼和開發工具都在服務器上。

使用的終端是MobaXterm。不得不說這個軟件真的好用。支持SSH、VNC、RDP等等。而且它還自帶X11 server。當你通過SSH登錄后,在命令行里執行一個需要顯示圖形界面的程序時,如果使用的是普通終端,那么就會報錯,因為你並沒有連接到遠端的圖形桌面。而MobaXterm則不報錯,並會在本地打開那個程序的圖形界面。注意是在本地Windows系統里打開。例如,用MobaXterm SSH登錄某台遠程的Ubuntu機器后,在命令行里輸入gedit(一款ubuntu自帶的圖形文本編輯器)並回車,那么就能直接在本地的Windows系統里顯示出一個 gedit 的窗口。這個窗口與終端窗口是相互獨立的。如下圖所示。

https://img2020.cnblogs.com/blog/919137/202105/919137-20210505195443776-671021101.png

這個功能非常方便,不需要登錄遠程桌面就可以使用遠端的帶圖形界面的程序。

但是問題也來於此。使用這個功能打開的遠程圖形界面,在其中進行編輯時,會發現一個嚴重影響編輯效率的問題。那就是“選中即復制”。也就是說,用鼠標選中任意一段文字或者代碼,那么這部分字符會自動被復制。

這會造成什么問題呢?

比如說:當你復制了一段代碼,想要替換掉編輯器中原本的一段代碼。如果你先把想要被替換的部分選中,再按ctrl + V粘貼,那么不好意思。你剛才的選中動作已經把這段字符復制了。所以你粘貼上去的還是這段字符,沒有變化。而且你之前的復制的那段字符,也被最近復制的內容沖掉了。你得重新去復制那段字符,然后先把要替換的部分刪掉,再粘貼。

又比如說:當你在閱讀代碼的時候,可能會經常習慣雙擊選中一段字符,可能是一個變量、函數或者數字,選中之后,可以用來搜索,或者高亮顯示相同的字符。這在編輯或者閱讀代碼的時候是常用的操作。但是“選中即復制”會導致你在不停地復制,很可能也影響你原本復制的其他東西。

這個問題困擾了我很久,簡直惡心死了。因為上面描述的兩種操作就是我個人的習慣。結果導致沒法正常復制粘貼。我一開始一直以為這是編輯器或者IDE的問題。直到查到問題所在。

解決方法

解決方法其實很簡單。導致這個問題的原因是Linux的X11圖形界面對於剪切板的設計。在X11系統中,有三個用於臨時保存內容的“剪切板”,分別是:

  • PRIMARY:按下鼠標中鍵復制、粘貼。或者選擇復制,右鍵粘貼。
  • SECONDARY:沒有使用
  • CLIOPBOARD:用戶顯式地按下 ctrl+c 或者菜單里的復制按鈕時復制到此處。

所以“選中即復制”的問題就出在 PRIMARY 上。這種設計雖然在有些時候非常方便快捷(例如命令行里,因為 ctrl+c 的作用是殺死當前程序),但是在遠程使用x11圖形界面的時候,就很討厭了。

在MobaXterm的設置里,關掉 PRIMARY 即可:

https://img2020.cnblogs.com/blog/919137/202105/919137-20210505201715651-1361317259.png

這個問題就這樣解決了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM