在进入或离开 man、vim、less 等全屏应用程序时,Windows Terminal 在 WSL2 中的行为很奇怪

在进入或离开 man、vim、less 等全屏应用程序时,Windows Terminal 在 WSL2 中的行为很奇怪

我在 Windows 10 上安装了 WLS2 Ubuntu。

我在Windows 终端进而:

type 'man man' to enter manpage
press 'd' to scroll down
press 'q' to quit

目前一切看起来都很好:

截图前

...但当向上滚动时,会出现“幽灵”输出:

向上滚动后的屏幕截图

如果启动 WSL 并在命令, 一切安好。

我注意到,在全屏应用中,例如manvimless' 命令将禁用滚动条,但Windows 终端让我向上滚动。

有没有办法设置 Windows 终端以使其像其他终端一样运行。

答案1

听起来 Windows Terminal 在运行man、、vim和等应用程序时并没有被告知切换到备用屏幕缓冲区less

这个 Stack Overflow 上的答案

备用屏幕缓冲区旨在为全屏终端程序提供此功能。在正常操作中,输出会添加到回滚缓冲区(大多数终端都允许用户回滚到前几行)。切换到备用屏幕缓冲区时,回滚缓冲区保持不变,备用屏幕缓冲区输出不会添加到回滚缓冲区。从备用屏幕缓冲区返回时,将恢复原始回滚缓冲区状态。这就是全屏应用程序所nano使用的。

这听起来很像您所描述的——执行全屏程序后,您可以滚动回前几行。

如果正在使用备用模式,则全屏命令的输出将不会添加到回滚缓冲区。

显示什么echo $TERM?如果没有screen-256color,请尝试通过以下方式进行设置:

export TERM=screen-256color

这并不是最终的解决方案。它应该将会为您自动(且正确地)设置。

如果TERM事实证明存在问题,那么您的启动脚本中是否有某些内容试图设置它?

grep -r TERM .*

相关内容