Используйте полосу прокрутки терминала с tmux

41

Я знаю, как прокручивать в tmux с помощью клавиатуры, но я заметил, что, похоже, есть способ использовать панель прокрутки терминала с GNU Screen . Можно ли это сделать с помощью tmux?

Джефф
источник
6
Вы не можете использовать панель прокрутки терминала с экраном GNU. Полоса прокрутки на самом деле не будет обращаться к буферу прокрутки экрана, а к терминалу, что означает, что прокручиваемые строки из разных сеансов экрана перепутаны.
ak2
@ ak2 Грусть ... но спасибо за информацию!
Джефф
2
У iTerm2 есть некоторые планы на будущее [интеграция с tmux ] ( code.google.com/p/iterm2/wiki/TmuxIntegration ). Такая интеграция, вероятно, включает использование собственной полосы прокрутки для просмотрабуфера истории tmux .
Крис Джонсен

Ответы:

42

Это возможно как на экране GNU, так и в tmux, и обходной путь аналогичен: обмануть мультиплексоры, заставив их думать, что у терминала нет режима «альтернативного экрана» (например, используемого в pico, mutt и т. Д.). Это достигается установкой команд termcap для сеанса.

Для экрана GNU, поместите это в .screenrc:

termcapinfo xterm*|xs|rxvt|terminal ti@:te@

и для tmux, добавьте это к себе .tmux.conf:

set -ga terminal-overrides ',xterm*:smcup@:rmcup@'

Часть команды ' xterm*' должна быть установлена ​​на то, что ваш терминал-эмулятор объявлен как. Некоторая форма xterm является хорошей догадкой, но вы можете проверить свою на большинстве sane * nix систем с помощью:

echo $TERM

и это обычно может быть установлено в настройках вашей терминальной программы (то есть: для Apple Terminal.app, это находится в Настройки-> Профиль-> Дополнительно (или Настройки-> Дополнительно-> Эмуляция до появления кода)) «Объявить терминал как».

Конечным результатом является то, что переполнение заканчивается в буфере обратной прокрутки терминала, а не исчезает. Конечно, поскольку это один статический буфер, при переключении между экранами или окнами tmux все будет беспорядочно, но это удобно для быстрого переключения, чтобы увидеть вывод lsкоманды или чего-то подобного.

Дуг Дж
источник
2
Кроме того, только что увидел superuser.com/questions/253414/… , который работает, как описано в качестве еще одной альтернативы.
Дуг Дж
2
Решение: gist.github.com/1297707
Ник
1
@Nick - Обратите внимание, что вы решаете другую проблему: добавили поддержку мыши в tmux. Может быть лучшим решением для вас, но оно отличается от использования собственного буфера прокрутки. Пока ваш эмулятор терминала определен правильно, вышеприведенное будет работать на y * nix, включая OSX
Doug J
1
Похоже, это был встроенный tcsh. На Bash вы можете использоватьecho $TERM
Дуг J
1
это «переполнение» работает, но при выходе из tmux появляются некоторые странные символы юникода: stackoverflow.com/q/31790939/2668831
Луис Мэддокс,
5

Чтобы включить прокрутку, вы можете включить встроенный режим мыши в вашем ~/.tmux.confследующем:

set -g mode-mouse on
Шубхам Чаудхари
источник