Как прокрутить вверх в окне терминала, пока генерируется новый ввод, не возвращаясь назад (Linux)

37

В Ubuntu я хочу прокручивать вверх, пока в моем терминальном окне выполняется команда, и генерирует новый вывод (на самом деле это запущенная команда rspec). Я могу прокрутить вверх, но каждый раз, когда rspec генерирует новую строку вывода на консоль, он отбрасывает меня обратно вниз. Есть ли способ прокрутить все вверх? Я использую терминатор на Linux Mint / Ubuntu 12.04 LTS

ОБНОВИТЬ

Я нашел возможный обходной путь Терминатор домашняя страница говорит, что с

stty ixon

Вы можете включить «Управление потоком XON / XOFF для вывода терминала. Возможность приостановить вывод, набрав ^ S, и возобновить его, набрав ^ Q [...]»

Это не совсем то, что я хотел, хотя, без необходимости приостанавливать вывод (и, возможно, интересно, если забыть снова включить его), я подумал, что может быть простая клавиша-модификатор, такая как shft-alt с прокруткой колесика мыши ... Любой лучшие решения?

Йо Людке
источник
Это одна вещь, которая мне действительно нравится в LXTerminal (LXDE).
Мэтью Лундберг,
Вы прокручиваете Shift-PgUp или полосу прокрутки?
ot--
@ MatthewLundberg Обычно с колесом прокрутки мыши, поэтому полоса прокрутки. Но это также не работает с shift-pgup :( Могу ли я иметь lxterminal внутри терминатора, вы знаете?
Yo Ludke
1
xfce4-terminalимеет опцию Scroll на выходе, которую вы можете снять, и выполняет только то, что вы просили.
Мартин Канаваль
1
В качестве обходного пути вы можете отправить вывод в файл, открыть другой терминал и tail -f file.txtпосмотреть, как он генерируется. Это оставило бы ваш 1-й терминал свободным для прокрутки назад и все еще позволяло бы вам просматривать результаты в режиме реального времени. Не элегантно, я знаю.
тердон

Ответы:

53

Хотя я немного опаздываю, я публикую это здесь, так что любой, кто придет сюда, получит решение. Для меня решение той же проблемы было:

Настройки терминатора -> вкладка «Профили» -> вкладка «Прокрутка» -> снять флажок «Прокрутить на выходе».

Преимущество этой опции в том, что она по-прежнему будет прокручиваться на выходе, когда вы находитесь в самом низу вывода, но как только вы прокрутите вверх, она остановится и не будет беспокоить вас, даже если выходной контент все еще находится в процессе генерироваться.

надеюсь, это поможет

Chikitulfo
источник
круто :) Можно ли создать ярлык для переключения этой опции?
Йо Людке
1
Я немного искал, но не нашел способа переключить его с помощью ярлыка в терминаторе. Однако, поскольку опция записана в файле конфигурации терминатора в «$ HOME / .config / terminator / config», должна быть возможность назначить глобальный ярлык для команды, которая включает и выключает эту опцию непосредственно в файле конфигурации.
Чикитулфо
4
Тем не менее, внесение этого изменения в файл конфигурации не повлияет на уже запущенные экземпляры терминатора, а только на новые экземпляры терминатора, запущенные после редактирования. Так что, если вы хотите включить его на работающем терминаторе, вы должны сделать это вручную, афаик. В любом случае, если параметр переключен на false, как только вы прокрутите вниз до последней строки, он продолжит автоматическую прокрутку на выходе. Автопрокрутка останавливается только при ручной прокрутке вверх. Поэтому я не вижу реальной необходимости включать и выключать эту опцию.
Чикитулфо
1

tail -f log.txt | lessобновится, чтобы перейти к новой информации, а затем вы можете идти вверх или вниз. Вы также можете использовать lessфункции поиска и так далее. С помощью метода pipe вы также можете анализировать движущийся вывод.

И та же идея, но без трубы less +F log.txt.
(Это предполагает, что вы можете работать со своим контентом таким образом.)

Старый способ Unix заключался в том, чтобы нажать Ctrl-S в вашем терминале, чтобы остановить, и Ctrl-Q, чтобы возобновить прокрутку вывода - это в основном то, что позволяет вам использовать терминатор stty ixon.
С добавленными полосами прокрутки это кажется мне довольно приличным - нажмите Control-S, прокрутите вверх до того, что вам нравится, и затем Control-Q, чтобы вернуться вниз. Да, вы иногда забудете отменить вывод.

Поскольку я исключительно ленив, и потому что мне нравится гибкость перенаправления вывода, я бы использовал tail -f с конвейером (при условии, что это соответствует случаю). Затем я могу остановить его, стрелку вверх и добавить что-то вроде grep, и он все еще работает: tail -f tac_plus.log | less | egrep 'peerip'

Брось некоторые catи teeтам, и у тебя настоящая вечеринка.

belacqua
источник
Я хотел использовать это для спецификации rspec - Проблема в том, что при подходах tail / less цвета теряются (вывод - черный и белый вместо зеленого / красного, если я запускаю команду напрямую)
Yo Ludke
@YoLudke Я не знаком с rspec или с тем, как он раскрашивает. Есть способы передать цвета через grep и т. Д., Но это может не сработать. Вы что-то делаете, например, запускаете указание rspec на постоянный / зацикливающийся / длительный процесс и получаете от этого свой вывод?
belacqua