如何制作Less以百分比表示位置

时间:2009-06-26 14:08:31

标签: less-unix

我现在的目标是在您运行时显示百分号,例如命令

man emacs

如果你运行它,你会得到'byte 3300'。

Alex's answer建议我需要通过

创建一个单独的shell函数
man "$1"| col -b > /tmp/manual
less /tmp/manual

其中$ 1表示第一个参数。


新问题发生在thread感谢Yuliy的难关!

6 个答案:

答案 0 :(得分:22)

解决方案

knitatoms' answer的手动版本较少 结合Alex Marteilli's answer 效果很好:通过其寻呼机选项将+Gg选项传递给less

例如,尝试

man -P 'less -s -M +Gg' man

这可以通过

永久实现
export MANPAGER='less -s -M +Gg'

在你的一个shell配置文件中(上面的语法是针对Bash和 ZSH)。现在,例如,man man显示百分比 想!

警告

您应该+Gg放入LESS变量中!例如, 做

export LESS='-M +Gg'
读取非常大的文件时,

会导致问题。例如,

yes | LESS='-M +Gg' less

效果不好......

解释

正如其他答案所解释的那样,问题是less不能说 你知道文件有多长,你在文件中的百分比是多少 是,并且在读取时默认情况下它不会读到文件的末尾 从管道。

来自OPTIONS的{​​{1}}部分:

man less

+ If a command line option begins with +, the remainder of that option is taken to be an initial command to less. For exam‐ ple, +G tells less to start at the end of the file rather than the beginning, and +/xyz tells it to start at the first occur‐ rence of "xyz" in the file. As a special case, +<number> acts like +<number>g; that is, it starts the display at the speci‐ fied line number (however, see the caveat under the "g" com‐ mand above). If the option starts with ++, the initial com‐ mand applies to every file being viewed, not just the first one. The + command described previously may also be used to set (or change) an initial command for every file. 表示“返回文件开头”。

来自g

man man

答案 1 :(得分:13)

export LESS="-m"

更一般地说,LESS环境变量可能包含与运行less时可以显式传递的命令行标志等效的选项 - 这里,-m选项告诉它提示更多丰富(包括百分比,如你所说)。您可以在该单个环境变量中传递多个选项,方法是使用$结束每个选项。有关详细信息,请参阅less's manpage

编辑:它当然是可能的(取决于你如何使用更少,例如,如果你正在使用它而不是在文件上调用它)那么知道它将显示的总大小,在这种情况下它当然不能显示% - 在这种情况下它会提示它有什么小信息,例如,它显示了多少文本至今。例如,man通过管道确实使用less

因此,如果您需要查看man中的%(而不是直接在文件上调用less),则需要使用“备用寻呼机”(环境变量{{1在MANPAGER命令行上切换-P,这是一个简单的脚本,将man的输出保存到临时文件,然后对后者使用man。 (这可能会失去人类自己的“着色”,除非你玩更深入的技巧等等 - 同样你可以使用less的“预格式页面”选项并将这样的预格式化页面解压缩到临时文件上运行man等,但这开始成为一个有点复杂的“简单脚本”; - )。

答案 2 :(得分:10)

在Linux上,我只需使用 Shift + G 进入手册页的末尾,然后使用 g 返回到开头。 (或者您可以使用&#39; &#39; )返回到之前的位置。

少则有足够的信息来显示您通过文件的距离百分比。 (您可能需要输入-M才能获得长提示。)

这有点像黑客但只有两次按键。不确定这是否适用于OS / X.

答案 3 :(得分:8)

添加到Alex Martelli的回答:

请注意,您也可以在运行时将任何命令行参数传递给less,只需输入(包括 - ),然后输入key即可。所以你只需输入

即可
-m<Enter>

进入少跑以切换长提示。

这对于需要在运行时更改的选项特别有用,例如: -S(线路折叠开/关)。

答案 4 :(得分:3)

对于实时admin/users运行时,我使用了less

那&#34; -M 输入&#34;在-M提示符下运行较少。

对于非常大的缓冲区,我还必须走到最后才能发现&#34;他们的大小。 结束并返回 Home

注意:我会将评论发布为@sleske的答案,但最后我记得,评论不支持:代码。

答案 5 :(得分:1)

我的环境中有这个。它会在底部打印<filename> - Lines X-Y of Z,或者至少打印出与此相同的信息。

export LESS='-P?f%f - .?ltLine?lbs. %lt?lb-%lb.?L of %L.:?pt%pt\%:?btByte %bt:-...'