Терминал Mac показывает конец буфера

#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 есть несколько других опций:

  1. В OS X 10.5 и более поздних версиях вы можете использовать меню справки для получения man страниц. Просто нажмите / и введите название нужной страницы, затем выберите ее из меню (хотя, к сожалению, я думаю, что здесь используется фиксированный путь). Это просто запускается man -P ul для вас в новом окне терминала.
  2. Другой способ заключается в рендеринге в 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) перейдет к концу ввода