Jak zwiększyć rozmiar bufora przewijania w Tmuxie?

328

Jak zwiększyć rozmiar bufora przewijania tmux?

Jeśli przejdę do trybu kopiowania, liczba dostępnych linii przewijania (widocznych w prawym górnym rogu) jest zawsze mniejsza niż 2000. Próbowałem znaleźć listę wszystkich poleceń tmux, ale nie mogę znaleźć niczego na temat rozmiaru przewijania. Widzę, że screenpolecenie ustawienia tej opcji nie działa tmux.

Korzystanie tmux1.8, Ubuntu 12.04 LTS, albo konsolealbo gnome-terminal.

moon.musick
źródło

Odpowiedzi:

428

Limit historii jest atrybutem okienka, który jest ustalany podczas tworzenia okienka i nie można go zmienić dla istniejących okien . Wartość pochodzi z history-limitopcji sesji (wartość domyślna to 2000).

Aby utworzyć panel z inną wartością, musisz ustawić odpowiedni history-limit opcję przed utworzeniem panelu.

Aby ustalić inną wartość domyślną, możesz umieścić w pliku wiersz podobny do następującego .tmux.conf:

set-option -g history-limit 3000

Uwaga: Ostrożnie ustawiając bardzo dużą wartość domyślną, może łatwo zużyć dużo pamięci RAM, jeśli utworzysz wiele paneli.

Dla nowego panelu (lub panelu początkowego w nowym oknie) w istniejącej sesji możesz ustawić tę sesję history-limit. Możesz użyć takiego polecenia (z powłoki):

tmux set-option history-limit 5000 \; new-window

W przypadku (początkowego panelu początkowego okna w) nowej sesji history-limitprzed utworzeniem sesji należy ustawić opcję „globalną” :

tmux set-option -g history-limit 5000 \; new-session

Uwaga: Jeśli wartość nie zostanie ponownie ustawiona history-limit, nowa wartość zostanie również użyta dla innych okien / okien / sesji utworzonych w przyszłości; obecnie nie ma bezpośredniego sposobu utworzenia pojedynczego nowego panelu / okna / sesji z własnym określonym limitem bez (przynajmniej tymczasowo) zmiany history-limit(chociaż show-option(szczególnie w wersji 1.7 i nowszych) może pomóc w odzyskaniu bieżącej wartości, aby można ją było później przywrócić ).

Chris Johnsen
źródło
26
Jeśli „linia” to tak naprawdę tylko zawarte w niej znaki, możemy założyć, że 128 bajtów to rozsądny rozmiar linii w pamięci. Jeśli zechcę przekazać 32 MB, aby przewinąć do tyłu o jeden panel (co mi odpowiada, nie używam wielu paneli), to mógłbym zwiększyć limit historii do około 2 ** (25 - 7) = 256K250 tysięcy linii.
phs
8
Skończyło się na rozliczeniuset-option -g history-limit 50000
phs
2
mój wydaje się podnosić tylko do około 4700 .. mimo nowej szyby. tmux 1.9
wuxmedia
4
Dla tych, którzy nie wiedzą, gdzie znaleźć plik .tmux.conf, możesz po prostu utworzyć nowy plik w ~ / .tmux.conf, a następnie dodać ten pojedynczy wiersz do pliku set-option -g history-limit 50000
C. Patrz
1
Trochę problemów, na które wpadłem. Wszystkie sesje tmux muszą zostać zamknięte, aby zmiana zaczęła obowiązywać. Pochodząc z ekranu GNU zakładałem, że każda nowa sesja ekranowa będzie źródłem ~ / .tmux.conf, ale tak nie jest. Dopiero po zamknięciu wszystkich sesji tmux i otwarciu nowej sesja ma wpływ na ~ / .tmux.conf.
rudolph9
24

Otwórz plik konfiguracyjny tmux za pomocą następującego polecenia:

vim ~/.tmux.conf

W pliku konfiguracyjnym dodaj następujący wiersz:

set -g history-limit 5000

Wyloguj się i zaloguj ponownie, uruchom nowe okna Tmux, a Twój limit wynosi teraz 5000.

f4d0
źródło
3
Wylogowanie i zalogowanie się nie jest konieczne. Musisz po prostu całkowicie zamknąć serwer tmux lub upewnić się, że korzystasz ~/.tmux.confz każdej sesji (a następnie uruchom nowe okna w tych sesjach i zamknij wszystkie stare okna).
henrebotha
3

Opiera się to na ntc2 i odpowiedzi Chrisa Johnsena. Korzystam z tego, ilekroć chcę utworzyć nową sesję z niestandardowym limitem historii. Chciałem stworzyć sposób tworzenia sesji z ograniczonym przewijaniem bez trwałej zmiany limitu historii dla przyszłych sesji.

tmux set-option -g history-limit 100 \; new-session -s mysessionname \; set-option -g history-limit 2000

Działa to niezależnie od tego, czy istnieją sesje. Po ustawieniu limitu historii dla nowej sesji resetuje ją z powrotem do domyślnej, która dla mnie to 2000.

Stworzyłem wykonywalny skrypt bash, który czyni to trochę bardziej użytecznym. Pierwszy parametr przekazany do skryptu ustawia limit historii dla nowej sesji, a drugi parametr ustawia nazwę sesji:

#!/bin/bash
tmux set-option -g history-limit "${1}" \; new-session -s "${2}" \; set-option -g history-limit 2000
devhen
źródło