Jak zwiększyć bufor przewijania w trakcie sesji ekranu?

237

Powiedzmy, że mam aktualnie uruchomioną sesję ekranową, z którą wchodzę w interakcję poprzez kit. Zdałem sobie sprawę, że bufor przewijania jest za mały i chciałbym go zwiększyć bez rozpoczynania nowej sesji ekranowej.

Czy jest na to sposób?

Zach
źródło
Na wypadek, gdyby ktoś chciał zwiększyć bufor przewijania podczas rozpoczynania nowej sesji:screen -h <numlines>
Scz

Odpowiedzi:

180

Strona mężczyzna wyjaśnia, że można wejść do trybu wiersza poleceń w sesji uruchomiony przez wpisywanie Ctrl+ A, :, a następnie wydając scrollback <num>komendę.

Frédéric Hamidi
źródło
4
Będziesz musiał zrobić dla każdego okna bieżącego ekranu osobno.
Matthew Wilcoxson,
2
gdzie <num>jest liczba linii przewijania
rakslice
Jeśli okaże się, że osiągnąłeś domyślny maksymalny bufor, nie możesz wyświetlić więcej historii, a ustawienie przez scrollback <num>, nie pomoże ci już rozszerzyć bufora, musisz ponownie wykonać ostatnie polecenie, aby uzyskać cały bufor historii.
Kamil
362

Naciśnij Ctrl-anastępnie, :a następnie wpisz

scrollback 10000

na przykład, aby uzyskać bufor linii 10000.

Możesz również ustawić domyślną liczbę linii przewijania, dodając

defscrollback 10000

do twojego ~/.screenrcpliku.

Aby przewijać (jeśli terminal domyślnie nie pozwala na to), naciśnij, Ctrl-a ESCa następnie przewiń (w zwykły sposób Ctrl-fna następną stronę lub Ctrl-ana poprzednią stronę lub tylko kółkiem myszy / dwoma palcami). Aby wyjść z trybu przewijania, wystarczy nacisnąć ESC.

Kolejna wskazówka: Ctrl-a ipokazuje twoje bieżące ustawienie bufora.

Lee Netherton
źródło
9
+1 za podpowiedź z defscrollback ustawionym na 1024 w Ubuntu 12.10 (z którego muszę korzystać w pracy).
erik
2
byobu-screenna Ubuntu 12.04 wydaje się ustawić defscrollback na 10000
chronospoon
4
Chciałem zauważyć, że jeśli twój screenrc otworzy dla ciebie dodatkowe warunki, musisz ustawić defscrollback przed otwarciem okien, albo dostaną domyślną 1024
majikman
nie działa na komputerze Mac. Umieszczam startup_message off' and 'defscrollback 5000' into my newly created ~ / .screenrc` i dostaje pierwszą linię, ale druga wydaje się być ignorowana.
Ben
9

Podczas uruchamiania sesji „screen” w ramach „sesji putty” jest minimalna ilość „domyślnego” bufora. W swojej pracy często używam ekranów, więc mogę powiedzieć, że nie będziesz mieć kombinacji bufora „screen” i bufora „putty” w sesji „screen”.

Ustawienie domyślnej liczby linii przewijania przez dodanie defscrollback 10000 do ~/.screenrcpliku jest właściwym rozwiązaniem.

Nawiasem mówiąc, w moim ./screenrcpliku używam „defscrollback 200000” .

Oracle DBA 2000 bc
źródło
4

Jak już wspomniano, mamy dwa sposoby!

 Ustawienie interaktywne na ekran (sesję)

I odbywa się to interaktywnie! I zacznij działać natychmiast!

CTRL + Aa następnie :I piszemy scrollback 1000000I uderzamyENTER

Odłączasz się od ekranu i wracasz! Zawsze będzie tak samo.

Otworzysz kolejny nowy ekran! A wartość jest ponownie resetowana do wartości domyślnej! Więc to nie jest ustawienie globalne!

 I stałe ustawienie domyślne

Dokonuje się tego poprzez dodanie defscrollback 1000000do .screenrc(w domu)

defscrollbacki nie scrollback(def oznacza domyślnie)

Musisz wiedzieć, że plik nie został utworzony! Ty to tworzysz !

> cd ~ && vim .screenrc

I dodajesz defscrollback 1000000do tego!

Lub jednym poleceniem

> echo "defscrollback 1000000" >> .screenrc

(jeśli jeszcze nie zostało utworzone)

Robiąc efekt

Po dodaniu wartości domyślnej do .screenrc! Już uruchomiony ekran przy ponownym dołączeniu nie zadziała! .screenrcProwadzony przy tworzeniu ekranu! I to ma sens! Podobnie jak w przypadku normalnego uruchamiania konsoli i powłoki!

Wszystkie nowo utworzone ekrany będą miały ustawioną wartość!

Sprawdzanie efektywnego rozmiaru bufora ekranu

Aby sprawdzić wpisz, CTRL + Aa następniei

Rezultat będzie taki jak

wprowadź opis zdjęcia tutaj

Co ważne, rozmiar bufora to liczba po znaku +
(na ilustracji ustawiłem go na 1 000 000)

Pamiętaj też, że kiedy zmienisz to interaktywnie! Efekt jest natychmiastowy i przejmuje domyślną wartość!

Przewijanie

CTRL+ Aa następnie ESC(aby przejść do trybu kopiowania).

Następnie nawiguj za pomocą Up, DownlubPgUp PgDown

I ESCponownie, aby wyjść z tego trybu.

(Dodatkowe informacje: aby skopiować hit, ENTERaby rozpocząć wybieranie! Następnie ENTERponownie, aby skopiować! Proste i fajne)

Teraz bufor jest większy!

I to wszystko podsumowuje ważne szczegóły!

Mohamed Allal
źródło
Dobrze wiedzieć, jak przewijać!
skytree
dzięki. nauczył się nowej sztuczki sprawdzania rozmiaru bufora ekranu za pomocą: CTRL + A, a następnie i
alphaGeek
3

OSTRZEŻENIE: zbyt wysokie ustawienie tej wartości może spowodować znaczną czkawkę w systemie. Im wyższa ustawiona wartość, tym więcej pamięci wirtualnej jest przydzielane procesowi ekranu podczas inicjowania sesji ekranu. Ustawiłem ~ / .screenrc na „defscrollback 123456789” i kiedy zainicjowałem ekran, cały mój system zawiesił się na dobre 10 minut, zanim wróciłem do punktu, w którym byłem w stanie zabić proces ekranu (który zużywał 16,6 GB VIRT mem).

1GLENCo
źródło
-3

Dla potomnych ta odpowiedź jest nieprawidłowa, jak zauważył Steven Lu. Pozostawia jednak oryginalny tekst.

Oryginalna odpowiedź:

Do osób przybywających przez wyszukiwarkę internetową (kilka lat później) ...

Podczas korzystania z ekranu bufor przewijania jest kombinacją zarówno screenbufora przewijania, jak wspomniano w dwóch poprzednich odpowiedziach, jak i bufora przewijania kitu.

Upewnij się, że ZARÓWNO zwiększasz bufor przewijania szpachli, jak i bufor przewijania ekranu, w przeciwnym razie samo okno szpachli nie pozwoli ci przewinąć do tyłu, aby zobaczyć screenhistorię przewijania (pokonane przez przewijanie ekranu za pomocą ctrl+a->ctrl+u)

Możesz zmienić limit przewijania szpachli w kategorii „Okno” w ustawieniach. Wyjście i ponowne otwarcie sesji szpachlowania na ekranie nie zamknie ekranu (zakładając, że po prostu zamkniesz okno szpachlówki i nie piszesz exit), jak poprosił PO.

Mam nadzieję, że pomoże to ustalić, dlaczego zwiększenie bufora przewijania ekranu nie rozwiązuje czyjegoś problemu.

Brad P.
źródło
17
To jest niedokładne. Screen zachowuje własny bufor. Gdy przewijasz w górę za pomocą ekranu w trybie kopiowania, ekran przekazuje ci własną historię ekranu za pomocą przekleństw. Gdy używany jest multiplekser terminala, taki jak screen, bufor natywnego emulatora terminala nie jest używany (w rzeczywistości może on gromadzić śmieci jako efekt uboczny)
Steven Lu
dobre punkty i uważam, że masz rację ... Zastanawiam się, czy powinienem usunąć swoją odpowiedź?
Brad P.,
Nie jestem pewny. W ten sposób usunę również mój komentarz, który ludzie lubią.
Steven Lu,
3
haha, całkiem dobrze. Myślę, że zmienię go, aby zauważyć, że jest niepoprawny, ale zostaw oryginalny tekst
Brad P.
2
Pewnie. Dzięki. Wolę pozostawiać tylko zmiany addytywne w takiej witrynie, aby ludzie mogli odejść od niej bez zamieszania.
Steven Lu,