How to make Less indicate location in percentage
Теперь я хочу показать знак процента также при запуске, например, команды
man emacs
Если вы запустите его, вы получите, например, "байт 3300".
Ответ Алекса подсказывает мне, что нам нужно сделать отдельную функцию оболочки
man "$1"| col -b > /tmp/manual
less /tmp/manual
где $1 относится к первому параметру.
Новая проблема в потоке. Спасибо Юлии за решительный ход!
6 ответов
Решение
Менее ручная версия ответа трикотажа в сочетании с ответом Алекса Мартейли работает довольно хорошо: передайте +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
и т. д., но это начинает становиться несколько сложным "простым сценарием";-).
Чтобы добавить к ответу Алекса Мартелли:
Обратите внимание, что вы также можете передать любой параметр командной строки в less во время выполнения, просто набрав его (включая -), а затем клавишу ввода. Так что вы можете просто напечатать
-m<Enter>
в бегущий меньше, чтобы переключить длинную подсказку.
Это особенно полезно для опций, которые необходимо изменить во время выполнения, например, -S (сворачивание строки вкл / выкл).
В Linux я просто иду в конец справочной страницы с помощью Shift+G, а затем возвращаюсь в начало с помощью g. (Или вы можете вернуться к своей предыдущей позиции с помощью '').
Меньше, чем достаточно информации, чтобы отобразить процент того, как далеко через файл вы находитесь. (Возможно, вам придется набрать -M
чтобы получить длинную подсказку.)
Это что-то вроде хака, но только два нажатия клавиш. Не уверен, что это работает на OS/X.
С живой 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:-...'