#macos #terminal
#macos #терминал
Вопрос:
Когда я вызываю команды типа man, она помещает все в буфер и показывает только одну страницу за раз. Я могу перемещаться с помощью клавиш со стрелками или пробела, но я хочу, чтобы он показывал все сразу, без необходимости прокручивать его. Что мне нужно сделать, чтобы изменить это? Я почти уверен, что это какая-то привязка к ключу, но я не могу понять это.
Я бы предпочел, чтобы он просто автоматически прокручивался до конца. Если есть какая-то команда, которую я могу ввести, чтобы заставить ее автоматически выполнять это, пожалуйста, дайте мне знать. Если вместо этого мне придется использовать привязку ключа, чтобы прокрутить его вниз до конца буфера, или отправить все в оболочку, то дайте мне знать.
Если я выполняю привязку ключа, я бы предпочел, чтобы это было что-то вроде shift / command down для прокрутки до конца вниз. И тогда я бы, вероятно, сопоставил аналогичный, чтобы вернуться назад.
Спасибо.
Комментарии:
1. Как мне сделать так, чтобы он всегда использовал это свойство. Я попробовал это, и man -P cat <command> — это то, что я хочу. Но я хочу, чтобы это было так же, как man <command>, поэтому мне не нужно каждый раз вводить -P cat. Что мне сделать, чтобы настроить его таким образом, не вводя дополнительные параметры форматирования? Я бы также предпочел сделать это для PAGER вместо MANPAGER. Кроме того, пока я здесь, я изменил его на закрытие терминала при выходе, но я также хочу, чтобы он завершал процесс и удалял терминал из моей док-станции. Должен ли я просто вводить killall Terminal или я могу настроить exit, чтобы также завершить процесс терминала и удалить его с моей док-станции
2. Терминал ведет себя не так; это многооконное приложение. Для этого вам следует задать другой вопрос (краткий ответ: не используйте kill, используйте инструмент, подобный
osascript
или моему собственномуappswitch
, чтобы попросить приложение завершить работу.)
Ответ №1:
При использовании man
он передает ваш результат через пейджер. Если вы не настроили это, на Mac это /usr/bin/less -is
.
Один из способов обойти пейджер — установить для него значение ul
. Например:
% man -P ul ls
LS(1) BSD General Commands Manual LS(1)
[...]
ul
это фильтр, который гарантирует сохранение жирного шрифта и подчеркивания. Они кодируются довольно архаичным способом с помощью X^HX
и X^H_
соответственно, которые современные терминалы не поддерживают; пейджеры обычно сами преобразуют их в управляющие последовательности терминала.
С man
есть несколько других опций:
- В OS X 10.5 и более поздних версиях вы можете использовать меню справки для получения
man
страниц. Просто нажмите ⇧⌘/
и введите название нужной страницы, затем выберите ее из меню (хотя, к сожалению, я думаю, что здесь используется фиксированный путь). Это просто запускаетсяman -P ul
для вас в новом окне терминала. -
Другой способ заключается в рендеринге в PostScript, который OS X может конвертировать в PDF, удобно отформатированный для печати, если вы хотите. Я использую эту
zsh
функцию годами:gman() { PDF=/tmp/man.$$.pdf print 'Converting to PDF...' man -t $@ | /usr/bin/pstopdf -i -o $PDF print 'Opening...' open $PDF { sleep 5; rm -f $PDF } amp;! }
Ответ №2:
Изменение пейджера на cat
вместо значения по умолчанию ( /usr/bin/less -is
на моем компьютере) должно привести к тому, что вы хотите. С man(1)
справочной страницы:
-P пейджер
Укажите, какой пейджер использовать. Этот параметр переопределяет
MANPAGER
переменную среды, которая, в свою очередь, переопределяетPAGER
переменную. По умолчаниюman
используется/usr/bin/less -is
. ‘
Таким образом, вы можете либо сделать man -P cat whatever
, либо вы можете установить MANPAGER
и / или PAGER
в своей среде на cat
и получить такое же поведение.
Ответ №3:
less
Пейджер, который обычно используется по умолчанию в большинстве систем, уже имеет привязки клавиш для перехода непосредственно к концу и началу его ввода:
g
перейдет к началу вводаG
(что на самом деле было бы чем-то вродеShift g
, если только вы не вводите с Caps Lock) перейдет к концу ввода