контакт Tmux, чтобы избежать прокрутки - PullRequest
1 голос
/ 09 марта 2020

Часто, когда я запускаю команду, которая пишет в stdout, и эта команда не выполняется, мне приходится прокручивать вверх (используя неудобные привязки клавиш) в поисках места, где я нажал Enter, чтобы увидеть, какая была первая ошибка (из сотни других, на многих экранах текста). Это и раздражает, и отнимает много времени. У меня sh была функция, которая позволяла мне прикрепить мой текущий терминал к тому месту, где я сейчас нахожусь, затем запустить команду, увидеть только первые строки вывода (столько, сколько подходит под моим курсором) и позволить Остальные выходные данные будут записаны, но не отображены. Другими словами, я хотел бы, чтобы функция позволяла мне автоматически прокручиваться до места, где я дал команду, чтобы увидеть первые строки вывода (где обычно отображается причина сбоя).

I искал это, но я не нашел это. Вы знаете, существует ли такая функция? Или есть идеи, как реализовать это с помощью некоторых хитростей или обходных путей?

1 Ответ

2 голосов
/ 09 марта 2020

Если у вас есть уникальное приглашение оболочки, вы можете привязать клавишу для перехода между приглашениями оболочки, например, что-то вроде этого заставит C-b S перейти к предыдущему приглашению оболочки, а затем S последующие:

bind S copy-mode \; send -X search-backward 'nicholas@myhost:'
bind -Tcopy-mode S send -X search-backward 'nicholas@myhost:'

Или аналогичным образом вы можете искать строки ошибок, если они имеют распознаваемый префикс. Если вы устанавливаете кандидат на выпуск tmux 3.1, вы можете искать регулярные выражения.

В качестве альтернативы вы можете использовать capture-pane, чтобы загрузить всю историю в редактор с привязками клавиш, которые вы предпочитаете, например:

$ tmux capturep -S- -E- -p|vim -

Или трубка к grep или что-то еще. Обратите внимание, что для работы с emacs вам понадобится временный файл.

Или попробуйте привыкнуть к tee командам с большим количеством вывода в файл для начала.

...