使用Emacs作为$PAGER?

16

在UNIX中有许多地方需要调用$PAGER程序(通常是less或类似命令),来显示一些输出内容。当然,在许多最常见的用途中,都有Emacs的替代方法(例如,在man的情况下),但我仍然希望有一种通用的方法来将Emacs作为我的系统范围的翻页器。理想情况下,这意味着对PAGER的调用会出现在Emacs的临时缓冲区中,类似于*Help*,您可以在其中进行导航,并通过按"q"键关闭。

我通常通过M-x shell运行shell,所以我设想的使用情况是,在*shell*窗口中输入像"man foo"这样的命令,会在另一个窗口中打开man页面,更或者准确地说,像内置的*Help*系统一样工作。


4
“Less即更少,但也有另一个名为Most的分页工具,它具有类似Emacs的绑定和一些美丽的颜色。” - Daimrod
1个回答

6

如果您需要使用$PAGER,您可能会对e-sink感兴趣。

对于man页的特定情况,最好使用Emacs内置的man模式,就像您所指出的那样。我在我的.bashrc中有这个设置:

man () 
{ 
    if [ "$TERM" == "eterm-color" ]; then
        emacsclient -e "(man \"$1\")";
    else
        command man "$@";
    fi
}

由于您使用的是 shell-mode 而不是像我一样使用 ansi-term-mode ,因此您要么必须始终使用emacsclient,要么在 .emacs 文件中做类似于(setenv“WITHIN_EMACS”“1”)的事情,这样您就可以切换到 $WITHIN_EMACS


2
你不需要设置自己的变量,emacs会为你在M-x shell中设置INSIDE_EMACS。请参阅手册 - brontitall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接