首先是一个误解:
任何选定的文本都会立即发送到剪贴板
实际上,在接收应用程序请求之前,永远不会“发送”文本。当您选择文本时,该应用程序仅声明选择的内容,这基本上意味着它会发出一个标志来表明从现在开始拥有它。
现在开始您的问题:
在X11中,可以有多个选择。其中2个具有众所周知的名称并已标准化。它们分别称为PRIMARY和CLIPBOARD。它们各自的常规行为如下:
- 主
- 选择文本后,应用程序会声明PRIMARY
- 应用程序从拥有的应用程序中请求PRIMARY,并将其内容粘贴在中键上。
- 剪贴板
- 当给出显式命令时,应用程序声明CLIPBOARD,通常为Ctrl- c。
- 应用程序从拥有的应用程序请求CLIPBOARD并在给出显式命令(通常为Ctrl-)时粘贴其内容v。
- 我可能不确定其他规则,例如,如果没有应用程序拥有CLIPBOARD,但是某些应用程序拥有PRIMARY,则在Ctrl-上粘贴primary v。
看来CLIPBOARD已经满足您的需求。您可以根据需要忽略PRIMARY(但请注意,某些较旧的应用程序xterm
可能仅支持PRIMARY)。就我个人而言,我做的相反:我忽略CLIPBOARD,仅使用PRIMARY。我想那只是我学会使用X11的方式,我什至没有意识到起初有CLIPBOARD。但是为了减轻您所描述的问题,我通常希望有一个可推送和可弹出的PRIMARY选择堆栈,因此在用其他选择破坏之后,我可以“弹出”先前的选择。
在回答您关于是否可以禁用PRIMARY行为的明确问题时,我认为这将非常困难。最直接的方法是在每个应用程序(或应用程序使用的工具箱)中分别禁用它,这肯定是不可行的。我想有一种“ X11防火墙”可以阻止要求构造PRIMARY的请求,但是我认为,如果不考虑PRIMARY并仅使用CLIPBOARD,这确实可以给您带来更多好处。
更多信息:Primary Selection和Clipboard Buffer有什么区别?