Обратное окно терминала / командной строки

5

Недавно мне пришло в голову, что иногда было бы намного лучше вводить команды терминала / командной строки в верхней части окна с последними командами запуска ниже. Реверс обычного дисплея.

Например, на экранах небольших ноутбуков гораздо удобнее фокусироваться на верхней части экрана, чем на нижней.

Независимо от того, хорошая ли это идея или нет, существует ли такой плагин для терминала / командной строки для достижения этой цели?

(Я в основном на OS X, но интересуюсь всеми решениями для платформ)

Джон Хэдли
источник
1
Многострочный вывод будет очень неудобно читать.
Даниэль Бек
@ Даниэль Бек, я полагаю, что это все еще может идти сверху вниз - чуть ниже моей текущей строки ... но я понимаю вашу точку зрения, это было бы не просто "обратное все".
Джон Хэдли
5
Правильно, и после заполнения страницы вам нужно прокрутить назад вверх, чтобы увидеть текущее (не предыдущее) приглашение. Это действительно неловкое поведение, а не альтернатива порядка на линии шоссе .
Даниэль Бек

Ответы:

5

Вот что можно поиграть в Bash.

Чтобы настроить это:

$ bash    # try this in a subshell since ^C seems to cause it to exit
$ f () { sed "1s/^/$(tput cup 0 0)/;s/^/$(tput il1)/"; }
$ PROMPT_COMMAND='tput cup 0 0;tput il1; echo'
$ exec > >(f)

Нажмите ввод еще один раз, и он готов попробовать. Иногда вывод и подсказка не в порядке, и могут быть другие странности, но попробовать это довольно интересно.

Программы, ориентированные на экран, не будут работать, потому что они не видят tty.

Деннис Уильямсон
источник
tput cup 0 0размещает курсор в верхнем левом углу терминала. tput il1вставляет пустую строку. Команда sedвставляет эти последовательности управления в начале, соответственно, первой строки и каждой строки вывода, перенаправленных в функцию. Команда execперенаправляет весь стандартный вывод в функцию. Это PROMPT_COMMANDвыполняется каждый раз, когда выдается приглашение Bash, и оно отображается в верхней части терминала.
Деннис Уильямсон
Другой подход может заключаться в использовании ловушки DEBUG Bash для выдачи последовательностей перемещения курсора.
Деннис Уильямсон