roo*_*kie 1 linux ssh terminal ubuntu
我最近必须设置一台 Windows 计算机。我通常远程进入 Linux 盒子(Ubuntu)进行开发,所以我使用“Windows 终端”应用程序和 Window 的内置 ssh 客户端来登录我的 Linux 盒子。现在我注意到我无法使用触控板/鼠标滚动
我必须求助于箭头按压,这不是我的首选方法。我一直无法弄清楚谁paging
在这个工作流程中负责 -
less
那里)我在 Windows 上尝试过 Alacritty,得到了相同的结果,我还尝试过 WSL Ubuntu(在 Windows 终端内)通过 ssh 登录远程 Linux 机器,但没有成功。
有人可以帮助我了解如何在此设置中启用分页支持/触控板鼠标滚动支持吗?
在某种程度上,两者兼而有之。
\n尽管终端有自己的“回滚”(您可以使用鼠标或滚动条访问),但全屏程序 \xe2\x80\x93 包括像 \'less\' \xe2\x80\x93 这样的寻呼机在运行时会故意禁用它(他们启用了所谓的全屏操作的备用屏幕模式),因为他们对终端的回滚没有足够的控制。因此,在此模式下禁用终端级滚动,并且所有滚动/分页均由“less”自定义完成。
\n(从某种意义上说,这就是使用终端内寻呼机的全部意义,而不是仅仅将整个文本转储到终端并在终端级别滚动它。通过在内部进行滚动,“less”可以从顶部开始文件并让您向下滚动,而不是总是停在底部。)
\n您的主要问题是“less”寻呼机根本不支持鼠标。(终端程序可以请求直接接收鼠标输入1 \xe2\x80\x93 例如,您会在 Vim 或 Elinks 或 WeeChat \xe2\x80\x93 中找到本机鼠标滚轮支持,但 \'less\' 分页器不会这样做这。)
\n在完整的 Ubuntu 环境中,当您以某种方式能够在“less”内滚动滚轮时,这实际上是终端将滚轮事件转换为假的向上/向下箭头按键 \xe2\x80\x93 GNOME 终端如果应用程序尚未激活直接鼠标输入,则在备用屏幕模式处于活动状态时始终会执行此操作。
\n(作为一个实际示例,如果您使用 手动要求终端切换到替代屏幕模式tput smcup
,并且您使用的是 GNOME 终端,则鼠标滚轮将开始滚动您的 shell 历史记录。tput rmcup
让您返回。)
因此第二个问题是 Windows Terminal 也不提供滚轮事件模拟。它确实支持将真实的滚轮事件发送到支持鼠标的程序(同样,您可以在使用 Windows 终端时在 Vim 中滚轮滚动),但滚轮到箭头主要是 GNOME 终端和其他基于 vte 的终端所独有的。
\n您的选择是:
\nPAGER=elinks
或vimpager
使用 Vim 作为寻呼机)。1然而,由于终端 API 在 Windows 中的工作方式,SSH 不是 100% 透明的(例如 ssh.exe 必须故意请求“类 Unix 终端”模式而不是传统的“WinNT 控制台”模式),重要的是,较旧的Windows 版本的 OpenSSH(我认为是 7.4p1)无法将任何鼠标事件中继到远程端。如果您至少使用 Windows 20H2 并拥有 OpenSSH 8.1p1 或更高版本,此问题已得到修复 \xe2\x80\x93。
\n