Если вам приходится работать в терминале сразу с несколькими задачами (или нужно быстро сравнить вывод двух команд), GNU screen отлично закрывает эту потребность: вы делите одно окно на несколько областей и переключаетесь между ними через горячие клавиши.

Ниже - практический гайд именно про split screen в GNU screen: как стартовать сессии, как резать окно, как управлять регионами, как закрывать лишние области и как сохранить раскладку, чтобы не собирать её заново после перезагрузки.

Стартуем сессию screen

  1. Запустите screen:
  • в терминале выполните команду screen
  1. Если появилось сообщение про лицензию/авторов:
  • нажмите Enter ещё раз, чтобы продолжить
  1. Как выйти или "отсоединиться":
  • завершить сессию: 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 - верхний регистр)

Эта команда закрывает область, которая в данный момент не активна.

Закрыть конкретную область

  1. Сначала переключитесь на нужную область: Ctrl-a TAB
  2. Затем закройте её:
  • Ctrl-a X (верхний регистр X)

Остальные регионы при этом остаются как есть.

Добавляем больше областей

Если двух регионов мало, вы можете делить область снова и снова - комбинируя вертикальные и горизонтальные разрезы.

Алгоритм простой:

  1. Перейдите в область, которую хотите разделить: Ctrl-a TAB
  2. Разрежьте её вертикально:
  • Ctrl-|

Так можно наращивать число регионов до нужного вам уровня.

Переименование области (чтобы не путаться)

По умолчанию каждый регион подписывается номером и названием (часто видно что там запущена bash). Удобнее сразу дать понятные подписи: "server", "logs", "build", "tests".

Сделайте так:

  • Ctrl-a A

Дальше:

  1. сотрите текущую подпись
  2. введите новую (например, logs)
  3. нажмите 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.

  1. Откройте командный режим:
  • Ctrl-a :
  1. Выполните:
  • focus next
  • focus prev
  • focus up
  • focus down
  • focus left
  • focus right
  • focus top
  • focus bottom

Направление задаёте относительно текущей позиции - так быстрее добраться до нужного региона.

Изменяем размеры областей: resize

По умолчанию screen распределяет пространство поровну. Команда resize позволяет управлять размерами руками.

  1. Сначала командный режим:
  • Ctrl-a :
  1. Примеры команд:
  • resize max - на максимум
  • resize min - на минимум
  • resize n - установить размер в n
  • resize +n - увеличить ширину/размер на n колонок
  • resize -n - уменьшить на n колонок
  • resize 30% - установить как 30% от исходного
  • resize -b - сделать равные размеры всем регионам
  • resize -h +20 - увеличить горизонтально на 20
  • resize -v +20 - увеличить вертикально на 20

Полезный "блок для практики" (как организовать под задачи)

Типовой сценарий, который быстро начинает ощущаться удобным:

  • одна область - запуск сервиса
  • вторая - сборка/компиляция
  • третья - логи/мониторинг
  • четвёртая - тесты/скрипты

Назначьте областям имена (Ctrl-a A) и сохраните раскладку (layout dump), чтобы каждый запуск был "по шаблону".

Если вам мало screen

Когда захочется ещё больше управления терминальными панелями (и другой философии), часто сравнивают GNU screen с tmux и терминальным эмулятором Terminator. Но для старта именно разделение экрана в screen вы уже освоили полностью: vertical/horizontal, переключение, создание shell, закрытие регионов, имена, сохранение раскладки, focus и resize.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *