退出 man 后如何还能看到“man”文本?

退出 man 后如何还能看到“man”文本?

我通常使用 tcsh 或 bash,并且经常想使用“man”来查看命令的选项。目前,当我退出 man 或按 ctrl-C 时,man 文本会消失,并且我会看到执行“man”命令之前的回滚缓冲区。我希望在命令提示符下键入命令时仍能看到我作为参考查看的“man”文本,而无需打开第二个窗口,我该怎么做?

答案1

此行为源自某些(硬件)终端和大多数(软件)终端仿真器中包含的“备用屏幕”功能。某些终端感知程序会切换到备用“屏幕”来执行其工作,并在关闭(退出、暂停等)时切换回正常“屏幕”。这实际上会清除此类程序的最终输出。

网上搜索“terminfo Prevent ALTScreen”讨论备用屏幕“问题”及其解决方案的页面

-X正如链接页面所述,某些程序可以配置为避免使用备用屏幕。较少的是一种间接的实现方式。Vim 也可以通过取消设置t_tit_te变量来进行类似的配置。


一个范围更广的解决方案是编辑术语信息终端的条目,以便它不包含备用屏幕控制序列。terminfo 条目形成一个数据库,该数据库告诉程序将哪些控制序列发送到终端以产生某些效果(移动光标、清除屏幕、擦除当前行的一部分等)。通过编辑终端使用的 terminfo 条目,您可以安排“忽略告诉”所有使用 terminfo 的程序“备用屏幕”控制序列的存在。

控制序列列表终端,我们可以看到感兴趣的控制序列(对于终端类似终端仿真器)是

  • 启用备用屏幕:ESC [ ? 47 h(1047 和 1049 也同样如此),并且
  • 恢复正常屏幕:ESC [ ? 47 l(1047 和 1049 同样)。

这些代码最有可能出现在 terminfo 变量smcup和中rmcup。删除当前 TERM 中的这些变量的一种快速而粗略的方法可能如下所示:

infocmp | sed -e 's/[sr]mcup=[^,]*,//' > /tmp/noaltscreen-terminfo
tic -o ~/.terminfo/ /tmp/noaltscreen-terminfo

这种方法比较粗糙,肯定不适用于所有终端,但它可能适用于大多数终端,终端smcup类似终端仿真器。理想情况下,您应该调查终端的 terminfo 条目中的和变量的值rmcup,并谨慎地编辑它们以防止出现不良行为。上面链接的讨论/解决方案页面有一个“预先制作的”terminfo 文件,您可以使用它,而不必自己破解(但那有什么乐趣呢?)。

答案2

您需要设置$MANPAGER/usr/bin/less -isX,根据需要替换 找到的路径less。 重要的是-X-is是传递给 less 的默认设置。

答案3

假设你的分页器是less,请将环境变量设置LESS为包含“X”。例如我的是:

LESS="-iMFXRj4a"

~/.bashrc您可以在您的文件中设置

export LESS="-X"

并包括您已有的任何其他选项或添加您喜欢的选项。

答案4

男人什么 | 更多

这工作正常(Fedora)。

相关内容