解决远程Linux X11窗口中“选中即复制”的问题
问题
最近一般用笔记本(Windows系统)远程连接到服务器(Ubuntu系统)上进行开发。代码和开发工具都在服务器上。
使用的终端是MobaXterm。不得不说这个软件真的好用。支持SSH、VNC、RDP等等。而且它还自带X11 server。当你通过SSH登录后,在命令行里执行一个需要显示图形界面的程序时,如果使用的是普通终端,那么就会报错,因为你并没有连接到远端的图形桌面。而MobaXterm则不报错,并会在本地打开那个程序的图形界面。注意是在本地Windows系统里打开。例如,用MobaXterm SSH登录某台远程的Ubuntu机器后,在命令行里输入gedit
(一款ubuntu自带的图形文本编辑器)并回车,那么就能直接在本地的Windows系统里显示出一个 gedit 的窗口。这个窗口与终端窗口是相互独立的。如下图所示。

这个功能非常方便,不需要登录远程桌面就可以使用远端的带图形界面的程序。
但是问题也来于此。使用这个功能打开的远程图形界面,在其中进行编辑时,会发现一个严重影响编辑效率的问题。那就是“选中即复制”。也就是说,用鼠标选中任意一段文字或者代码,那么这部分字符会自动被复制。
这会造成什么问题呢?
比如说:当你复制了一段代码,想要替换掉编辑器中原本的一段代码。如果你先把想要被替换的部分选中,再按ctrl + V粘贴,那么不好意思。你刚才的选中动作已经把这段字符复制了。所以你粘贴上去的还是这段字符,没有变化。而且你之前的复制的那段字符,也被最近复制的内容冲掉了。你得重新去复制那段字符,然后先把要替换的部分删掉,再粘贴。
又比如说:当你在阅读代码的时候,可能会经常习惯双击选中一段字符,可能是一个变量、函数或者数字,选中之后,可以用来搜索,或者高亮显示相同的字符。这在编辑或者阅读代码的时候是常用的操作。但是“选中即复制”会导致你在不停地复制,很可能也影响你原本复制的其他东西。
这个问题困扰了我很久,简直恶心死了。因为上面描述的两种操作就是我个人的习惯。结果导致没法正常复制粘贴。我一开始一直以为这是编辑器或者IDE的问题。直到查到问题所在。
解决方法
解决方法其实很简单。导致这个问题的原因是Linux的X11图形界面对于剪切板的设计。在X11系统中,有三个用于临时保存内容的“剪切板”,分别是:
- PRIMARY:按下鼠标中键复制、粘贴。或者选择复制,右键粘贴。
- SECONDARY:没有使用
- CLIOPBOARD:用户显式地按下 ctrl+c 或者菜单里的复制按钮时复制到此处。
所以“选中即复制”的问题就出在 PRIMARY 上。这种设计虽然在有些时候非常方便快捷(例如命令行里,因为 ctrl+c 的作用是杀死当前程序),但是在远程使用x11图形界面的时候,就很讨厌了。
在MobaXterm的设置里,关掉 PRIMARY 即可:

这个问题就这样解决了!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探