如何禁用 GNU 屏幕本身中的备用缓冲区但不适用于 vim,而不是在里面?

dnl*_*lgl 12 bash vim xterm gnu-screen

我想要完成的是我在常规 ssh 会话中习惯的鼠标滚轮滚动行为。在 bash 提示中,鼠标滚轮应该滚动我的终端输出,并在 less/vim 内滚动 - 他们使用的备用缓冲区,因此在退出时,less 内显示的文本没有任何剩余。如果我在 .screenrc 中禁用备用缓冲区功能,如下所示:

termcapinfo xterm ti@:te@
Run Code Online (Sandbox Code Playgroud)

然后它也被 vim/less 禁用,鼠标滚轮滚动不会被他们处理。启用屏幕的内部备用缓冲区模拟,如下所示:

altscreen on
Run Code Online (Sandbox Code Playgroud)

仅有助于在 less/vim 退出后恢复 bash 输出。不是在鼠标滚轮里面滚动。

那么,是否有任何屏幕选项,也许在某些屏幕分叉/替代方案中可以禁止屏幕本身使用备用缓冲区?

小智 1

您可能想考虑使用 tmux 而不是 screen ( https://tmux.github.io )。Tmux 具有 xterm 鼠标支持,因此您可以使用滚轮滚动缓冲区,而无需禁用备用缓冲区。

请注意,tmux 的默认配置使用 ctrl-b 作为前缀,但您可以轻松地将其更改为 ctrl-a,并添加类似屏幕的绑定以使其更容易。网上有大量示例,例如http://blog.obnox.de/tmux-with-screen-like-key-bindings/

确保添加mouse on到配置中以使 xterm 鼠标支持正常工作。作为一个额外的好处,它还允许您在窗口和窗格之间单击并使用鼠标调整它们的大小。

Tmux 还有许多其他好处,特别是垂直分割(我猜现在终于被添加到屏幕上)以及在一个窗口中具有多个分割(窗格)的能力。