Как сделать Меньше указать местоположение в процентах

Теперь я пытаюсь показать знак процента также при запуске, например, команды

man emacs

Если вы запустите его, вы получите, например, "байт 3300".

Ответ Alex говорит мне, что нам нужно сделать отдельную функцию оболочки

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

где $1 относится к первому параметру.


Новая проблема находится в потоке. Благодаря Юлию за крутой ход!

Ответ 1

Решение

Менее ручная версия ответа knitatoms в сочетании с ответ Alex Marteilli работает довольно хорошо: передайте опцию +Gg на less через опцию пейджера.

Например, попробуйте

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

Это можно сделать постоянно, поставив

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

в одном из файлов конфигурации оболочки (выше синтаксис для Bash и ЗШ). Теперь, например, man man отображает процент, как вы хотел!

Внимание!

Нельзя помещать +Gg в переменную less! Например, делать

export LESS='-M +Gg'

вызовет проблемы при чтении очень больших файлов. Например,

yes | LESS='-M +Gg' less

работает не очень хорошо...

Объяснение

Как объяснили другие ответы, проблема в том, что less не может сказать какой процент в файл вы до тех пор, пока он не знает, как долго файл is, и он не читает в конце файла по умолчанию при чтении из трубы.

В разделе 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, +<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:

-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

export LESS="-m"

В общем случае переменная среды LESS может содержать опции, эквивалентные флажкам командной строки, которые вы могли бы явно передать при запуске LESS - здесь, параметр -m, который сообщает ему, чтобы он предлагал более богатый (включая процент, Как вы спросили). Вы можете передать также несколько параметров внутри этой переменной окружения, заканчивая каждый с $. Для получения дополнительной информации см. меньше manpage.

Изменить: это, конечно, возможно (в зависимости от того, как вы используете меньше, например, если вы подключаетесь к нему, а не вызываете его в файле), который меньше не знает общий размер будет отображаться, и в этом случае, конечно, он не может отобразить% - в этом случае он подскажет, какую небольшую информацию у него есть, например, сколько текста оно пока покало. Например, man использует LESS таким образом, по каналам.

Итак, если вам нужно увидеть% in man (а не при вызове LESS непосредственно в файл), вам нужно использовать "альтернативный пейджер" (переменная среды MANPAGER или переключатель -P в командной строке man), который представляет собой простой script, который сохраняет man вывод в файл temp, а затем использует LESS для последнего. (Это может потерять собственную "окраску", если вы не будете играть еще дальше и глубже и т.д. И т.д. - аналогичным образом вы можете использовать опцию "preformat pages" в man и расстегнуть такую ​​предварительно отформатированную страницу на временный файл, на котором будет выполняться LESS и т.д., но это начинает становиться несколько сложным "простым script"; -).

Ответ 3

В Linux я просто перехожу в конец справочной страницы с помощью Shift + G, а затем вернемся к началу с G. (Или вы можете вернуться в предыдущую позицию с помощью ' ').

Меньше тогда имеется достаточно информации, чтобы отобразить процент от того, насколько далеко вы находитесь в файле. (Вам может потребоваться ввести -M, чтобы получить длинное приглашение.)

Это немного взломать, но только два нажатия клавиши. Не уверен, что это работает на OS/X.

Ответ 4

Чтобы добавить к ответу Alex Martelli:

Обратите внимание, что вы также можете передать любой параметр командной строки меньше во время выполнения, просто набрав его (включая -), а затем введите ключ. Таким образом, вы можете просто ввести

-m<Enter>

в бежать меньше, чтобы переключить длинное приглашение.

Это особенно полезно для параметров, которые необходимо изменить во время выполнения, например. -S (включение/выключение линии).

Ответ 5

В режиме live less я использовал -M.

Что "-M Enter" в приглашении : с меньшим количеством запусков.

С действительно большими буферами мне также пришлось дойти до конца, чтобы "обнаружить" их размер. End и обратно Home.


Примечание. Я бы разместил комментарий в ответ @sleske, но, как я помню, комментарии не поддерживают теги <kbd>Keyboard<kbd>.

Ответ 6

У меня это в моей среде. Он напечатает <filename> - Lines X-Y of Z внизу или, по крайней мере, такую ​​же информацию, как и она.

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