是否可以从一个终端复制文本并将其输入到另一个终端而不选择它?
更准确地说,在同一个终端窗口中,我可以通过 杀死文本行CTRL-U
,然后通过 猛拉被杀死的行CTRL-Y
。但是,CTRL-Y
在另一个终端窗口甚至另一个终端选项卡中尝试时似乎不起作用。
我在 Arch Linux x86_64 的 KDE 桌面环境(plasma 5.27.6)中使用 bash 5.1.16、Konosle 终端。
答案1
在现代bash
的默认配置中,Ctrl-U和Ctrl-分别Y绑定到 readline 库函数unix-line-discard
和yank
。换句话说,这些操作是由bash
它自己处理的,而不是由 Konsole 处理的。
shell 不知道其他终端窗口或选项卡,因此它无法将终止的文本传递给它们。为此,您需要一个真正集成到窗口系统的 shell,而不是驻留在终端仿真器中的 shell。
如果bind-tty-special-chars
将 readline 变量设置为 Off,那么Ctrl-U将回退到 TTY/PTY 驱动程序的kill
字符功能(参见stty -a
和man termios
),而这将无法被 shell 撤消 - 并且由于每个终端选项卡都是使用单独的 PTY 设备实现的,所以该层的问题也会相同。
所以答案一定是:使用普通的shell,将文本从一个终端会话复制到另一个终端会话(不使用某种可以跨越多个 PTY 的外部机制(例如 GUI 终端仿真器,或)bash
来选择复制的文本)是不可能的。screen
tmux