![tmux 基于 GUI 的滚动](https://linux22.com/image/1535789/tmux%20%E5%9F%BA%E4%BA%8E%20GUI%20%E7%9A%84%E6%BB%9A%E5%8A%A8.png)
像 xfce4-terminal 这样的 GUI 终端仿真器有几种滚动终端缓冲区的方法。主要有:
- shift-(pgup/pgdown, home/end, 向上/向下)
- 鼠标滚轮
- 单击并拖动滚动条上的按钮
我希望有一种方法可以使这三个程序都在 tmux 中运行。
我知道 3 在分屏模式下无法使用。我对此没意见。我不会使用分屏。
我知道有set -g mouse on
。这只适用于上面列表中的第 2 项。我真的非常想要列表中的所有三个。
GNU screen 实际上有这个功能。你可以使用
termcapinfo xterm* ti@:te@
在 .screenrc 中。我喜欢这种行为。我没有使用 GNU screen,因为它处理终端大小调整的能力非常差。
答案1
我不相信这是可能的——就像这种滚动方法在vim
/之类的应用程序中不起作用一样nano
。
鼠标点击可以传递到终端上运行的应用程序,但这是您正在使用的终端的扩展......正如您所说,某些终端仿真器也可以传达鼠标滚轮事件,但应用程序也必须支持此类事件。
这不是立即可行的,因为应用程序正在将光标移动到终端上的绝对坐标并绘制其输出。这是一个扩展 - 旧终端只能在屏幕底部(或纸张......xterm
和朋友是直接后代电传打字机)。随着技术的进步,屏幕上光标移动等功能也应运而生。现在我们使用“终端仿真器“(这就是xterm
)而不是物质的”端子“。
当您使用Shift+ PgUp/PgDn或拖动滚动条时,您将通过终端仿真器的“回滚缓冲区“——你应该庆幸有这样的事!
随着新行在底部输出,旧行将被推离屏幕顶部,然后可以通过查看终端的回滚缓冲区来获取。这是静态的,不会改变(不可变的)。
尝试检查回滚缓冲区并观察应用程序是否正确地重新绘制自身是毫无意义的。
不要忘记,终端的缓冲区和应用程序是两个非常不同的东西!
tmux
您可以使用Ctrl+B然后PgUp/来PgDn查看一个窗格的回滚缓冲区(请记住,tmux
实际上是在终端仿真器内运行的终端仿真器)。此时tmux
将“冻结“该窗格,您将能够向上/向下滚动,并使用?
和向后/向前搜索(与和/
相同)。vim
less
按Return或Ctrl+C返回底部并再次与应用程序/shell 交互。