Answers:
我相信这与其说是有关man
本身,不如说是您选择的寻呼机(PAGER
环境变量)与使用中的终端相结合。
我猜您的传呼机可能是less
(如今是典型的默认传呼机,并且符合说明)。
less
有一个选项-X
可以使您的行为符合您的期望。
-X or --no-init
Disables sending the termcap initialization and deinitialization
strings to the terminal. This is sometimes desirable if the
deinitialization string does something unnecessary, like clear‐
ing the screen.
例如PAGER="less -X" man man
,可以使用它进行测试,如果发现此行为更好,则可以考虑将PAGER
其永久设置为该值。
LESS=-X
来避免更改PAGER
(我不能100%地相信它可以在所有具有此类空间的程序中工作,尽管它可以在人中工作。)
如果您的页面调度程序运行得很少(这是很常见的),则无需处理修改页面调度程序,只需执行I / O重定向即可:
man <whatever you want to man> | cat -
这会将副本打印到终端,以便您在需要时可以向上滚动。
-
表示标准输入,但cat
无论如何都假设是
由于不仅less
其他文本应用程序也vim
显示出同样令人讨厌的功能,所以我要做的就是从终端中删除终端支持所涉及命令的terminfo
功能。
这些命令是smcup
和rmcup
,旨在允许打开和允许cup
命令(光标位置)的移动。
这是我用来使任务自动化的shell函数,它至少适用于Solaris和大多数Linux发行版:
fixterminfo()
{
(
[[ ! -d /tmp/terminfo ]] && { mkdir /tmp/terminfo || return ; }
cd /tmp/terminfo || return
TERM=xterm infocmp > xterm.src.org
sed -e 's/rmcup=[^,]*,//' -e 's/smcup=[^,]*,//' xterm.src.org > xterm.src
if diff xterm.src.org xterm.src
then
echo xterm terminfo already patched
return
fi
TERMINFO=/tmp/terminfo tic xterm.src
if [ -f /usr/share/lib/terminfo/x/xterm ] ; then
XTERM=/usr/share/lib/terminfo/x/xterm
else
if [ -f /lib/terminfo/x/xterm ] ; then
XTERM=/lib/terminfo/x/xterm
else
if [ -f /usr/share/terminfo/x/xterm ] ; then
XTERM=/usr/share/terminfo/x/xterm
else
echo xterm terminfo not found ; return
fi
fi
fi
if [ ! -f ${XTERM}.org ]
then
sudo cp ${XTERM} ${XTERM}.org || return
fi
cat /tmp/terminfo/x/xterm | sudo dd of=${XTERM}
)
}
如果您的终端条目没有回退到xterm
,则应xterm
在脚本中用正确的终端名称替换。
您可以将输出通过管道传递给cat
命令
man man|cat
或使用它代替默认的寻呼机,如本例中那样,它本身会调用man:
PAGER=cat man man
现在是2016年,只需打开第二个终端,选项卡或窗口或在线阅读该信息即可。