Как сделать, чтобы Less указывал местоположение в процентах

StackOverflow https://stackoverflow.com/questions/1049350

  •  20-08-2019
  •  | 
  •  

Вопрос

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

man emacs

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

Ответ Алекса подсказывает мне, что нам нужно создать отдельную функцию оболочки с помощью

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

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


Новая проблема находится в нить. Спасибо Юлию за ответственный ход!

Это было полезно?

Решение

Решение

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

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

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

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

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

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

Предупреждение

Вам следует нет положить +Gg в LESS переменная!Например, делая

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, +<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.

Другие советы

export LESS="-m"

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

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

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

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

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

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

Чтобы добавить к ответу Алекса Мартелли:

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

-m<Enter>

в команду less, чтобы переключить длинную подсказку.

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

С живым less время выполнения, которое я использовал -M.

Это "-MВходить: подскажите с меньшим пробегом.

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


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

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

export LESS='-P?f%f - .?ltLine?lbs. %lt?lb-%lb.?L of %L.:?pt%pt\%:?btByte %bt:-...'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top