有趣的是,这对一些人来说也是一个tmux
问题:
http://daemonforums.org/showthread.php?t=7311
但目前我正在坚持screen
,我想知道我如何才能screen
在这方面“表现”。
使用选择文本老鼠除非线长于窗格的宽度,否则没有问题。我已经尝试过使用:width
、使用和不使用该-w
选项进行实验。 (包起来,不然看起来很乱(:+wrap
))
哦,:width
对环境非常挑剔。如果设置width
太高,会导致长线所有的终端来回移动(即如果你的bash
提示是user@host $
它只会显示为r@host $
),这看起来非常难看。
选择一条分成几倍窗格宽度的长线将导致以下行为:
- 将显示选择器(反向)超过左窗格与右窗格重叠。首先,这看起来有问题。选择器也应该环绕在窗格的右边框处。
- 粘贴所选内容有时会导致长行在第一部分行处被切断,从而截断其余部分;有时甚至尝试添加
|
(!),尝试继续该行,就好像它是多行一样脚本(结果:)bash: syntax error near unexpected token '|'
啊。
即使使用鼠标也不能以某种方式使其工作吗?
答案1
简短的回答:不,GNU 屏幕不能做到这一点。
长答案:GNU screen 在很大程度上忽略了 xterm 鼠标协议,除了它接受的特殊情况鼠标点击(这“鼠标轨迹”特征)。
要按照您的建议进行选择需要做更多的工作:
- xterm 鼠标协议的工作原理是让终端向您的应用程序发送转义序列。
screen
仅使用“正常”鼠标协议 (1000),该协议在按下鼠标按钮时发送转义序列,并在释放(任何)鼠标按钮时发送另一个转义序列。- 仅像这样的单击将不支持您在选择/粘贴时期望的拖动方式。所以
screen
不会尝试在这方面做任何事情。 - 当 xterm 鼠标协议处于活动状态时,除非使用鼠标按钮,否则无法进行选择/粘贴shift。
- 无论哪种方式(无论您是否打开
mousetrack
),screen
都依赖于终端来显示选择突出显示。 xterm(和其他终端)无法设置选择边距,因此您可以突出显示屏幕的整个宽度。
相比之下,tmux
用鼠标做的事情更多。它实际上在不同类型的 xterm 鼠标协议之间进行转换,以提供终端之间的差异,例如,在 UTF-8 模式 (1005) 和 SGR (1006) 之间进行选择。
原则,tmux
可以进行修改以提供增强的选择/粘贴,如本问题所述,因为它能将 xterm mouse-mode 设置为 1002(单元格运动鼠标跟踪),这将告诉它在哪里绘制自己的突出显示。我没有看到它在源代码中实现,所以你的链接tmux 如何仅在一个窗格中选择内容?似乎仍然相关。
tmux
例如,中的(键盘)复制模式似乎不知道窗格。
也有缺点:
- 这将是慢的:比复制模式慢得多,因为(a)从您的终端发回更多字符,并且(b)您对使用鼠标的性能的期望会有所偏差。如果您不是在本地计算机上运行而是通过 ssh 运行,这会非常明显。
- 该选择仅对 有用
tmux
,例如,通常不会被复制到 X 环境中的其他窗口。
进一步阅读: