如何使用外部屏幕按键绑定在屏幕内滚动屏幕?

如何使用外部屏幕按键绑定在屏幕内滚动屏幕?

我在笔记本电脑上本地运行屏幕会话。在该屏幕会话中,我通过 ssh 连接到我完成大部分工作的服务器。由于该连接有时会重置(例如 VPN 超时),因此我也在服务器上运行屏幕会话,以便我可以重新连接到它并让我的 shell 保持原样。

所以我的工作流程是:唤醒笔记本电脑,切换到终端,找到本地屏幕会话正在运行,但显示一条消息显示连接超时,通过 ssh 连接到我的服务器,运行screen -x以重新连接到服务器上的屏幕会话,然后完成我的工作。

~/.screenrc服务器上的文件仅包含一行,altscreen on.否则,我所有的自定义屏幕内容(包括将元字符自定义为 Ctrl-Space,以及带有窗口名称的状态栏)仅位于我的笔记本电脑上。 (我altscreen on笔记本电脑的.screenrc文件中也有。)

这样做的结果是,我可以使用 Ctrl-A(默认)控制远程屏幕会话,并且可以使用 Ctrl-Space 控制本地屏幕会话。我通常不控制远程屏幕会话,也不用它做任何事情,除了连接到它之外,但这就是我的问题所在。

目前,如果我尝试使用 Ctrl-Space+[ 在远程服务器上向后滚动,则它无法正常工作。我可能会看到我之前打开的 Vim 缓冲区的内容或其他内容。要在远程服务器上向后滚动,我使用 Ctrl-A+[。

我怎样才能做到这一点,以便我可以正常滚动,即使用 Ctrl-Space+[,并查看远程服务器上我的 shell 的正确回滚历史记录? 换句话说,我想假装它screen甚至不存在于远程服务器上,因为我只想将它用于恢复连接中断之前我停止的工作。

答案1

screen是另一个终端内的终端模拟器。您可以在外部屏幕中向后滚动,但如果您在其中运行的应用程序类似于screenvim或另一个半图形应用程序,它实现了其屏幕渲染,包括自行滚动,并且不使用终端(此处screen)滚动缓冲区,那么就有终端(此处screen)对此无能为力。

例如,如果你screen在里面跑步,情况也是一样的。xterm您不能xterm再使用 的滚动条。

您会注意到,当您重新连接远程屏幕时,您会看到远程终端屏幕的内容screen,并且可以访问它是回滚缓冲区(通过与 screen)。

相关内容