Użyj paska przewijania terminala z tmux

41

Wiem, jak przewijać w tmuxie za pomocą klawiatury, ale zauważyłem, że wygląda na to, że można użyć paska przewijania terminala z ekranem GNU . Czy można to zrobić za pomocą Tmux?

Jeff
źródło
6
Tak naprawdę nie można używać paska przewijania terminala w GNU Screen. Pasek przewijania nie będzie w rzeczywistości uzyskiwał dostępu do bufora przewijania Screen, ale do terminala, co oznacza, że ​​przewijane linie z różnych sesji Screen są pomieszane.
ak2
@ ak2 Smutek ... ale dzięki za informacje!
Jeff
2
iTerm2 ma pewne przyszłe plany [integracji z tmux ] ( code.google.com/p/iterm2/wiki/TmuxIntegration ). Taka integracja prawdopodobnie obejmuje użycie natywnego paska przewijania do przeglądaniabufora historii tmux .
Chris Johnsen,

Odpowiedzi:

42

Jest to możliwe zarówno na ekranie GNU, jak i na tmuxie, a obejście jest podobne: oszukać multipleksery, aby pomyślały, że terminal nie ma trybu „alternatywnego ekranu” (takiego jak używany przez pico, mutt itp.). Dokonuje się tego poprzez ustawienie komend termcap dla sesji.

W przypadku ekranu GNU umieść to w .screenrc:

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

i dla tmux, dodaj to do .tmux.conf:

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

Część xterm*polecenia powinna być ustawiona na dowolną deklarowaną jako emulator terminala. Pewna forma xterm jest dobrym pomysłem, ale możesz sprawdzić swój w większości rozsądnych * nix systemów:

echo $TERM

i zwykle można to ustawić w preferencjach programu terminalowego (tj. w przypadku Apple'a Terminal.app, to w Ustawieniach-> Profil-> Zaawansowane (lub Ustawienia-> Zaawansowane-> Emulacja przed yosemite) „Zadeklaruj terminal jako”.

Efektem końcowym jest to, że przepełnienie kończy się w buforze przewijania terminala zamiast znikać. Oczywiście, ponieważ jest to jeden bufor statyczny, podczas przełączania między oknami ekranowymi lub tmux będzie się robić bałagan, ale jest to przydatne do szybkiego przesuwania w górę, aby zobaczyć wynik lspolecenia lub tym podobne.

Doug J.
źródło
2
zobaczyłem też superuser.com/questions/253414/… , który działa zgodnie z opisem jako kolejna alternatywa.
Doug J
2
Rozwiązanie: gist.github.com/1297707
Nick
1
@Nick - Zauważ, że rozwiązujesz inny problem: dodanie obsługi myszy do tmux. Może to być dla Ciebie lepsze rozwiązanie, ale różni się od korzystania z natywnego bufora przewijania. Tak długo, jak emulator terminala jest poprawnie zdefiniowany, powyższe będzie działać na y * nix, w tym OSX
Doug J
1
wygląda na to, że był to wbudowany tcsh. Na bash możesz użyćecho $TERM
Doug J
1
ten „przepełnienie” działa, ale wyświetla niektóre dziwne znaki Unicode po wyjściu z tmux: stackoverflow.com/q/31790939/2668831
Louis Maddox
5

Aby włączyć przewijanie, możesz włączyć wbudowany tryb myszy w ~/.tmux.confnastępujący sposób:

set -g mode-mouse on
Shubham Chaudhary
źródło