Если вам приходится работать в терминале сразу с несколькими задачами (или нужно быстро сравнить вывод двух команд), GNU screen отлично закрывает эту потребность: вы делите одно окно на несколько областей и переключаетесь между ними через горячие клавиши.
Ниже - практический гайд именно про split screen в GNU screen: как стартовать сессии, как резать окно, как управлять регионами, как закрывать лишние области и как сохранить раскладку, чтобы не собирать её заново после перезагрузки.
Стартуем сессию screen
- Запустите screen:
- в терминале выполните команду
screen
- Если появилось сообщение про лицензию/авторов:
- нажмите Enter ещё раз, чтобы продолжить
- Как выйти или "отсоединиться":
- завершить сессию:
exit - отсоединиться, не уничтожая процессы: Ctrl-d
- вернуться к уже запущенной сессии:
screen -r
Так вы сможете держать программы внутри screen и продолжать работу позже.
Разделяем экран вертикально: Ctrl-|
Чтобы получить две области по вертикали, нажмите:
- Ctrl-|
После этого экран станет разрезан вертикально (левая и правая области).
Микро-заметка про клавишу |
В зависимости от раскладки клавиатуры:
- на US-клавиатурах
|обычно вводится как Shift + / - на многих европейских раскладках - через Alt + клавишу слева от Z
Разделяем экран горизонтально
Если нужно наоборот - по горизонтали:
- Ctrl-a S (буква S - в верхнем регистре)
Дальше у вас снова будет две области: верхняя и нижняя.
Переключаемся между областями
Когда областей несколько, без переключения вы будете "видеть не то".
Переход на следующую область
- Ctrl-a TAB
После переключения иногда окажется, что новая область пустая. Тогда просто создайте в ней терминал/оболочку.
Создать shell в текущей области
- Ctrl-a c
Закрываем области (и не рушим всё)
Закрыть только неактивную область
- Ctrl-a Q (буква Q - верхний регистр)
Эта команда закрывает область, которая в данный момент не активна.
Закрыть конкретную область
- Сначала переключитесь на нужную область: Ctrl-a TAB
- Затем закройте её:
- Ctrl-a X (верхний регистр X)
Остальные регионы при этом остаются как есть.
Добавляем больше областей
Если двух регионов мало, вы можете делить область снова и снова - комбинируя вертикальные и горизонтальные разрезы.
Алгоритм простой:
- Перейдите в область, которую хотите разделить: Ctrl-a TAB
- Разрежьте её вертикально:
- Ctrl-|
Так можно наращивать число регионов до нужного вам уровня.
Переименование области (чтобы не путаться)
По умолчанию каждый регион подписывается номером и названием (часто видно что там запущена bash). Удобнее сразу дать понятные подписи: "server", "logs", "build", "tests".
Сделайте так:
- Ctrl-a A
Дальше:
- сотрите текущую подпись
- введите новую (например,
logs) - нажмите Enter
Сохраняем раскладку, чтобы не собирать всё заново
Если вы регулярно запускаете screen с одинаковым разбиением, рутина быстро надоедает. В screen это решается "дампом" раскладки в файл.
1) Откройте командный режим
- нажмите Ctrl-a :
2) Выполните команду layout dump
Используйте формат:
layout dump .my_filename
В вашем варианте
my_filename- замените на нужное имя файла.
3) Восстановление раскладки при следующем запуске
Снова в командном режиме:
source .my_filename
Автозагрузка раскладки через .screenrc
Если хотите, чтобы раскладка подгружалась автоматически при старте screen, добавьте команду в конфиг.
Идея такая:
- допишите
source .my_filenameв ~/.screenrc
Один из способов - добавление строки через echo, например:
echo source .my_filename >> ~/.screenrc
После этого раскладка будет подниматься вместе с screen.
Быстрый переход к области по направлению (focus)
Если регионов много, Ctrl-a TAB может начать раздражать: вы будете "крутиться" по кругу, добираясь до нужного места.
Вместо этого используйте команду focus.
- Откройте командный режим:
- Ctrl-a :
- Выполните:
focus nextfocus prevfocus upfocus downfocus leftfocus rightfocus topfocus bottom
Направление задаёте относительно текущей позиции - так быстрее добраться до нужного региона.
Изменяем размеры областей: resize
По умолчанию screen распределяет пространство поровну. Команда resize позволяет управлять размерами руками.
- Сначала командный режим:
- Ctrl-a :
- Примеры команд:
resize max- на максимумresize min- на минимумresize n- установить размер вnresize +n- увеличить ширину/размер наnколонокresize -n- уменьшить наnколонокresize 30%- установить как 30% от исходногоresize -b- сделать равные размеры всем регионамresize -h +20- увеличить горизонтально на 20resize -v +20- увеличить вертикально на 20
Полезный "блок для практики" (как организовать под задачи)
Типовой сценарий, который быстро начинает ощущаться удобным:
- одна область - запуск сервиса
- вторая - сборка/компиляция
- третья - логи/мониторинг
- четвёртая - тесты/скрипты
Назначьте областям имена (Ctrl-a A) и сохраните раскладку (layout dump), чтобы каждый запуск был "по шаблону".
Если вам мало screen
Когда захочется ещё больше управления терминальными панелями (и другой философии), часто сравнивают GNU screen с tmux и терминальным эмулятором Terminator. Но для старта именно разделение экрана в screen вы уже освоили полностью: vertical/horizontal, переключение, создание shell, закрытие регионов, имена, сохранение раскладки, focus и resize.
