当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何制作Less以百分比表示位置》经验,为你挑选了4个好方法。

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

man emacs

如果你运行它,你得到'字节3300'.

亚历克斯的回答告诉我,我们需要通过单独的shell函数

man "$1"| col -b > /tmp/manual
less /tmp/manual

其中$ 1指的是第一个参数.


新问题出现在线程上.感谢Yuliy的难关!



1> ntc2..:

一个不太手动版knitatoms'答案 联合亚历克斯Marteilli的回答 工作得很好:通过+Gg选项来less通过其寻呼机选项.

例如,试试

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

这可以通过推杆永久实现

export MANPAGER='less -s -M +Gg'

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

警告

你应该+GgLESS变!例如,做

export LESS='-M +Gg'

读取非常大的文件时会出现问题.例如,

yes | LESS='-M +Gg' less

效果不好......

说明

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

来自以下OPTIONS部分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, + acts
       like +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:

-P pager, --pager=pager
       Specify which output pager to use.  By default, man uses pager
       -s.  This option overrides the $MANPAGER environment variable,
       which in turn overrides the $PAGER environment  variable.   It
       is not used in conjunction with -f or -k.

       The value may be a simple command name or a command with argu?
       ments, and may use shell quoting (backslashes, single  quotes,
       or  double  quotes).  It may not use pipes to connect multiple
       commands; if you need that, use a wrapper  script,  which  may
       take  the file to display either as an argument or on standard
       input.



2> Alex Martell..:
export LESS="-m"

更一般地说,LESS环境变量可能包含等同于运行时可以显式传递的命令行标志less-m选项- 这里是告诉它更丰富地提示的选项(包括你提出的百分比).您可以在该单个环境变量中传递多个选项,每个选项以a结尾$.有关更多信息,请参阅less的手册页.

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

所以,如果您的具体需要的是看到在%man(而不是调用时less直接对文件),你需要使用"替代呼机"(环境变量MANPAGER或交换机-Pman的命令行),这是节省了一个简单的脚本man的输出到临时文件,然后使用less后者.(这可能会失去人类自己的"着色",除非你玩更深入的技巧等等 - 同样你也可以使用"preformat pages"选项man并将这样的预格式化页面解压缩到运行的临时文件less等,但这开始成为一个有点复杂的"简单脚本";-).



3> keybits..:

在Linux上我只是用Shift+ 去到手册页的末尾G然后返回到开头g.(或者你可以回到以前的位置'').

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

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



4> sleske..:

添加到Alex Martelli的回答:

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

-m

进入少跑以切换长提示.

这对于需要在运行时更改的选项尤其有用,例如-S(线路折叠打开/关闭).

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有