如何更改默认的“阅读”程序?

Hal*_*lst 7 osx less man printing

现在,当我运行时man (something)less用于查看它。然而,在 Mac OS X 上,我真的很喜欢用触摸板而不是up/downpage-up/page-down按钮滚动。有没有办法只将文本打印到终端而不是使用lessor more

unp*_*nic 7

不确定 OSX,但希望它足够 Unix-y ......

在您的 $HOME/.bashrc 中添加以下行:

export MANPAGER=cat
Run Code Online (Sandbox Code Playgroud)

如果您希望所有分页程序都以这种方式运行,请PAGER改为设置。 man将使用MANPAGERif 设置,否则回退到PAGER,如果未设置回退到more


War*_*ung 7

要获得您想要的效果,您可以在单独的窗口中获得一个手册页,视图从第一页开始,请将以下内容添加到您的~/.bash_profile

function man {
    mf=`mktemp /tmp/$1-formatted-XXXXXXXXX`
    /usr/bin/man -t "$@" | pstopdf -i -o $mf
    mv $mf $mf.pdf
    open -W $mf.pdf
    rm $mf.pdf
}
Run Code Online (Sandbox Code Playgroud)

您可以注销并重新登录以激活它,或者使用以下命令重新加载文件:

. ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

后者冒着重新定义PATH具有重复信息的变量之类的风险。

此函数会覆盖该man命令,使其在临时文件中构建 PDF 格式的手册页版本,在您的 PDF 查看器(默认为预览)中打开该文件,然后在您关闭查看器时删除临时 PDF。这个想法是,您的默认 PDF 查看程序可能会以您想要的方式响应触摸板。

为了获得删除临时 PDF 的最后一个功能,我必须open(1)等到 PDF 查看器关闭才能继续。这意味着您无法在 PDF 保持打开状态时继续使用终端窗口。解决此问题的一种方法是删除-W标志并按照open命令执行类似的命令sleep 1,这应该足以让预览打开。另一个黑客可能是用这样的东西替换最后一行:

( sleep 60 ; rm $mf.pdf ) &
Run Code Online (Sandbox Code Playgroud)

这将rm命令在未来安排60 秒,当然足够了。