Mac终端显示缓冲区结束

时间:2011-04-05 22:50:58

标签: macos terminal

当我调用像man这样的命令时,它会将所有内容放入缓冲区,并且一次只显示一个页面。我可以使用我的方向键或空格键进行导航,但我希望它能够立即显示所有内容而无需滚动浏览。我需要做些什么来改变它?我很确定这是一些关键的绑定,但我无法弄明白。

如果只是自动滚动到最后,我会更喜欢它。如果有一些命令我可以进入以使其自动执行此操作,请告诉我。如果我必须使用键绑定来使其向下滚动到缓冲区的末尾,或者将所有内容发送到shell,那么请告诉我。

如果我正在做一个键绑定,我更喜欢它像shift / command + down一样向下滚动。然后我可能会绘制一个类似的图片来重新开始。

感谢。

3 个答案:

答案 0 :(得分:2)

当您使用man时,它会通过寻呼机传递您的结果。如果您尚未对其进行配置,则在Mac上为/usr/bin/less -is

绕过寻呼机的一种方法是将其设置为ul。例如:

% man -P ul ls 
LS(1)                     BSD General Commands Manual                    LS(1)
[...]

ul是一个过滤器,可确保保留粗体和下划线。它们分别由X^HXX^H_以相当古老的方式编码,现代终端不支持;寻呼机通常将这些转换为终端转义序列。

使用man,还有其他几个选项:

  1. 在OS X 10.5及更高版本中,您可以使用 获取man页面的“帮助”菜单。 按下 / 并键入您的页面名称 想要,然后从菜单中选择它(虽然我认为这使用了一个 不幸的是固定路径)。这个 只需在新的终端窗口中为您运行man -P ul
  2. 另一个是渲染 PostScript,OS X可以转换 到PDF格式,格式很好 打印如果你想。我去过 使用此zsh功能多年:

     gman() {
       PDF=/tmp/man.$$.pdf
       print 'Converting to PDF...'
       man -t $@ | /usr/bin/pstopdf -i -o $PDF
       print 'Opening...'
       open $PDF
       { sleep 5; rm -f $PDF } &!
     }
    

答案 1 :(得分:0)

将寻呼机更改为cat而不是默认设置(我的机器上为/usr/bin/less -is)应该可以执行您想要的操作。来自man(1) man page

  

-P 寻呼机

     

指定要使用的寻呼机。此选项会覆盖 MANPAGER 环境变量,该变量会覆盖 PAGER 变量。默认情况下, man 使用 /usr/bin/less -is 。   “

因此,您可以执行man -P cat whatever,也可以将环境中的MANPAGER和/或PAGER设置为cat并获得相同的行为。

答案 2 :(得分:0)

less寻呼机通常是大多数系统的默认寻呼机,它已经具有直接到输入结束和开始输入的键绑定:

  • g将转到输入的开头
  • G(实际上是Shift+g的内容,除非您使用大写锁定键输入)将转到输入的末尾