Як збільшити буфер прокрутки в сеансі запущеного екрана?


237

Скажімо, у мене зараз працює сеанс екрана, з яким я взаємодію за допомогою шпаклівки. Я зрозумів, що буфер прокрутки занадто малий і хотів би збільшити його, не запускаючи новий сеанс екрана.

Чи є спосіб це зробити?


Про всяк випадок, якщо хтось захоче збільшити буфер прокрутки при початку нового сеансу:screen -h <numlines>
Scz

Відповіді:


180

Сторінка людей пояснює , що ви можете увійти в режимі командного рядка в запущеній сесії набравши Ctrl+ A, :, а потім виконавши scrollback <num>команду.


4
Вам доведеться робити це для кожного вікна поточного екрану окремо.
Меттью Вілкокссон

2
де <num>кількість рядків прокрутки
rakslice

Якщо ви виявите, що максимальний буфер за замовчуванням не може відображати більше історії, і якщо встановити scrollback <num>, це більше не допоможе вам розгорнути буфер, вам потрібно повторити останню команду, щоб отримати весь буфер історії.
Каміль

362

Натисніть Ctrl-aпотім :і потім введіть

scrollback 10000

наприклад, щоб отримати буфер 10000 рядків, наприклад.

Ви також можете встановити за замовчуванням кількість ліній прокрутки, додавши

defscrollback 10000

у ваш ~/.screenrcфайл.

Щоб прокрутити (якщо ваш термінал не дозволяє вам за замовчуванням), натисніть, Ctrl-a ESCа потім прокрутіть (звичайно Ctrl-fдля наступної сторінки або Ctrl-aдля попередньої сторінки, або просто колесом миші / двома пальцями). Щоб вийти з режиму прокрутки, просто натисніть ESC.

Ще одна порада: Ctrl-a iпоказує ваше поточне налаштування буфера.


9
+1 для підказки із функцією defscrollback, яка встановлена ​​у 1024 в Ubuntu 12.10 (яку я повинен використовувати на роботі).
Ерік

2
byobu-screenна Ubuntu 12.04, здається, встановлено зворотний відкат на 10000
chronospoon

4
Я хотів би зазначити, що якщо ваш screenrc відкриє додаткові умови для вас, вам потрібно поставити defscrollback перед відкриттям windows, інакше вони просто отримають за замовчуванням 1024
majikman

це не працює на mac. Я ставлю startup_message off' and 'defscrollback 5000' into my newly created ~ / .screenrc` і він отримує перший рядок, але другий, здається, ігнорується.
Бен

9

Існує мінімальна кількість буфера "за замовчуванням", коли ви запускаєте сеанс "екрану" в рамках "сеансу шпаклівки". Я багато використовую екрани у своїй роботі, тому я можу вам сказати, що у вас не буде комбінації буфера "екран" та "шпаклівка" в межах "сеансу" екрану.

Встановлення за замовчуванням кількості рядків прокрутки, додавши defscrollback 10000 до свого ~/.screenrcфайлу, є правильним рішенням.

До речі, я використовую у своєму ./screenrcфайлі "defscrollback 200000" .


4

Як вже згадувалося, у нас є два способи!

 Інтерактивна установка за екраном (сеансом)

І робиться це інтерактивно! І набирають чинності негайно!

CTRL + Aслідом за :І ми набираємо scrollback 1000000І натискаємоENTER

Ти відірвешся від екрана і повернешся! Це буде завжди те саме.

Ви відкриєте ще один новий екран! І значення знову скидається до типового! Тож це не глобальна настройка!

 І постійне налаштування за замовчуванням

Що робиться додаванням defscrollback 1000000до .screenrc(вдома)

defscrollbackа не scrollback(визначити значення за замовчуванням)

Що потрібно знати, якщо файл не створений! Ви його створюєте !

> cd ~ && vim .screenrc

І ти додаєш defscrollback 1000000до цього!

Або в одній команді

> echo "defscrollback 1000000" >> .screenrc

(якщо вже не створено)

Діє ефект

Коли ви додасте за замовчуванням до .screenrc! Уже запущений екран при повторному вкладенні не набере чинності! .screenrcПерспективі при створенні екрану! І це має сенс! Так само, як при звичайній консолі та запуску оболонки!

І всі нові створені екрани матимуть задане значення!

Перевірка ефективного розміру буфера на екрані

Щоб перевірити тип, CTRL + Aза яким слідi

І результат буде таким

введіть тут опис зображення

Важливо, що розмір буфера - це число після знака +
(на ілюстрації я встановив його 1 000 000)

Зауважте також, що коли ви змінюєте це інтерактивно! Ефект негайний і переймає значення за замовчуванням!

Прокрутка

CTRL+ Aпісля чого ESC(для переходу в режим копіювання).

Потім перейдіть з Up, DownабоPgUp PgDown

І ESCзнову вийти з цього режиму.

(Додаткова інформація: скопіювати хіт, ENTERщоб почати вибір! Потім ENTERзнову копіювати! Просте та класне)

Тепер буфер більший!

І це підсумовує важливі деталі!


Чудово знати кроки прокрутки!
skytree

Дякую. дізнався новий трюк, щоб перевірити розмір буфера екрана, використовуючи: CTRL + A, а потім i
alphaGeek

3

ПОПЕРЕДЖЕННЯ: встановлення цього значення занадто високе може призвести до того, що ваша система відчує значну гикавку. Чим вище встановлене значення, тим більше віртуальної пам’яті виділяється на екранному процесі під час ініціювання екранного сеансу. Я встановив свій ~ / .screenrc на "defscrollback 123456789", і коли я ініціював екран, вся моя система застигла протягом добрих 10 хвилин, перш ніж повернутися до того, що мені вдалося вбити процес екрана (на що витрачалося 16,6 ГБ до того часу пам’яті VIRT).


-3

Що стосується нащадків, ця відповідь є невірною, як зазначив Стівен Лу. Залишаючи оригінальний текст, однак.

Оригінальна відповідь:

Для тих, хто приходить за допомогою веб-пошуку (через кілька років) ...

Під час використання екрана ваш буфер прокрутки - це комбінація як screenбуфера прокрутки, як було зазначено у двох попередніх відповідях, так і вашого буфера прокрутки прокрутки.

Будьте впевнені, що ви збільшуєте БОТЬ буфера прокрутки шпаклівки, а також буфера прокрутки екрану, інакше саме ваше вікно шпаклівки не дозволить вам прокрутити назад, щоб побачити screenісторію прокрутки вашої сторінки (подолану прокруткою всередині екрана ctrl+a->ctrl+u)

Ви можете змінити обмеження прокрутки шпаклівки в категорії "Вікно" в налаштуваннях. Вихід та повторне відкриття сеансу шпаклівки на екрані не закриє ваш екран (якщо ви просто закриєте вікно шпаклівки та не набираєте exit), як вимагає ОП.

Сподіваємось, що допоможе визначити, чому збільшення буфера прокрутки екрану не вирішує чиюсь проблему.


17
Це неточно. Екран зберігає власний буфер. Коли ви прокручуєте екран на екрані в режимі копіювання, екран надсилає вам власну історію екрана через прокляття. Коли використовується термінальний мультиплексор, такий як екран, буфер власного терміналу емулятора терміналу не використовується (дійсно він може або не може накопичувати сміття як побічний ефект)
Стівен Лу,

хороші моменти, і я вважаю, що ви правильні ... Цікаво, чи варто видалити свою відповідь?
Бред П.

Я не впевнений. Оскільки це також видалить мій коментар, який, здається, подобається людям.
Стівен Лу

3
ха-ха, цілком правильно. Думаю, я відредагую це, щоб зазначити, що він невірний, але залиште оригінальний текст
Бред П.

2
Звичайно, дякую. Я вважаю за краще залишати лише додаткові зміни на такому сайті, щоб люди могли піти з нього, не плутаючись.
Стівен Лу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.