Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

5 способов разделить окно терминала в Linux

Оригинал: 5 ways to split your Linux terminal
Автор: Seth Kenlon (Red Hat)
Дата публикации: 8 мая 2020 г.
Перевод: В.Костромин
Дата перевода: 15 мая 2020 г.

4 different color terminal windows with code

Linux предлагает множество способов разделить ваш терминал, чтобы вы могли работать в многозадачном режиме.

Есть ли что-нибудь более привлекательное, чем тепло мерцающий терминал Linux?

Конечно есть: два тепло мерцающих терминала Linux. И даже так: чем больше терминалов, тем лучше.

Много лет назад терминалы были физическими устройствами, но в наше время они просто эмулируются какими-то приложениями на вашем компьютере. Если вы предпочитаете терминал в качестве интерфейса для работы с компьютером, вы, вероятно, знаете, что одного терминала обычно недостаточно. Вам неизбежно приходится открывать новый терминал или новую вкладку, чтобы вы могли работать в нем, пока ваш первый занят компиляцией, или конвертацией, или другой обработкой данных.

Если вы системный администратор, то вам понадобится как минимум четыре открытых окна, когда вы работаете в нескольких системах одновременно.

Терминальные приложения с вкладками уже давно существуют в Linux и завоевали популярность, так как эта особенность современного терминала востребована. И все же, иногда необходимость переключаться между вкладками отвлекает или просто неудобно прыгать то туда, то сюда.

Единственная альтернатива состоит в том, чтобы поделить экран так, чтобы два или больше терминальных окон отображались одновременно в одном окне приложения. И в Linux есть много инструментов, которые помогут вам сделать это.

Оболочки, терминалы, консоли

Прежде чем вы начнете делить экран на кусочки, вы должны понять разницу между терминалом, оболочкой и "консолью". Чтобы представить себе полную картину, прочитайте предыдущую заметку в моем блоге (или ее перевод).

Суть кратко:

  • Оболочка - это самый низкий уровень взаимодействия пользователя с компьютером. Оболочка предоставляет пользователю строку ввода-вывода с приглашением ввести команду. Оболочка всегда работает где-то под вашим рабочим столом POSIX, даже если вы ее не видите (потому что именно этот экземпляр оболочки запускает вашу пользовательскую сессию).
  • Терминал - это приложение с загруженной в него оболочкой, работающее на графическом сервере (например, X11 или Wayland). Терминал работает только тогда, когда у вас запущено окно терминала. Терминал - это "дверь" для доступа к вашей оболочке.
  • Термин "консоль" или "виртуальная консоль" обычно используется для оболочки, запущенной вне вашего графического окружения. Вы можете перейти к виртуальной консоли, нажав комбинацию клавиш Alt-Ctrl-F2 (обычно доступны комбинации с клавишами от F1 до F7, где F1 или F7 представляют ваш рабочий стол, в зависимости от вашего дистрибутива).

Некоторые приложения позволяют вам разделить вашу оболочку или консоль, в то время как другие позволяют разделить ваш терминал.

tmux

tmux terminal

tmux - это, пожалуй, самый гибкий и удобный для разделения экрана терминальный мультиплексор, ориентированный на клавиатуру. С его помощью вы можете разместить одну консоль над другой, а затем переключаться между ними. Вы также можете разделить каждый экземпляр консоли по горизонтали пополам (или на три, четыре части и т.д.),

Всё управление консолями производится с клавиатуры, что означает, что вам никогда не придется отрывать руку от клавиш в поисках мыши, но для этого вы должны освоить некоторые новые комбинации клавиш.

Если вы используете tmux в первую очередь для разделения экрана, то единственные команды, которые вам действительно нужны, это:

  • Ctrl-B % для разделения экрана по вертикали (одна оболочка слева, одна - справа)
  • Ctrl-B" для разбиения по горизонтали (одна оболочка вверху, другая - ниже)
  • Ctrl-B O для активации другой оболочки
  • Ctrl-B ? для получения помощи
  • Ctrl-B d для отключения от Tmux, оставив его работать в фоновом режиме (используйте команду tmux attach для повторного входа)

У tmux много преимуществ, в том числе возможность запуска сеанса tmux на одном компьютере, а затем удаленное присоединение к тому же сеансу с другого компьютера.

Например, если tmux запущен на Pi, я могу постоянно оставаться залогиненным в IRC - я запускаю tmux на Pi, а затем захожу с любого компьютера, на котором я оказался. Когда я выхожу из системы, tmux продолжает работать, терпеливо ожидая, когда я подключусь к сеансу с другого компьютера.

GNU Screen

GNU Screen terminal

Так же, как tmux, GNU Screen является мультиплексором оболочки. Вы можете отсоединиться и снова подключиться к запущенному сеансу, а также разделить экран по горизонтали и вертикали.

Screen немного более неуклюж, по сравнению с tmux. По умолчанию для клавиатурных команд в нем используется комбинация клавиш Ctrl-A с еще какой-то клавишей, но Ctrl-A уже используется в оболочке Bash для того, чтобы перейти в начало строки. Поэтому, если у вас запущен Screen, вы вынуждены нажимать Ctrl-A дважды, чтобы перейти в начало строки. Лично я переопределил эту комбинацию на Ctrl-J с помощью следующей строки в файле $HOME/.screenrc:

escape ^jJ

Функция разделения экрана в Screen работает хорошо, но в ней отсутствуют некоторые приятные мелочи, которые есть в tmux. Например, когда вы разделяете свою окно оболочки, новая оболочка не запускается на вновь созданной панели. Вы должны перейти в новое пространство с помощью Ctrl-A Tab (или Ctrl-J, если вы переопределите комбинацию клавиш, как я) и вызвать новый экземпляр оболочки вручную с помощью Ctrl-A C.

В отличие от tmux, созданная панель не исчезает, когда вы выходите из оболочки, что является конструктивной особенностью, которая в некоторых случаях весьма полезна, но иногда может вызывать раздражение, поскольку вынуждает вас управлять разделением вручную.

Тем не менее, Screen - это надежное и гибкое приложение, которое вы можете использовать, если обнаружите, что tmux почему-либо недоступен для вас.

Вот основные команды разделения панели, использующие сочетания клавиш по умолчанию:

  • Ctrl-A | для разделения по вертикали (одна оболочка слева, одна оболочка справа)
  • Ctrl-A S для разделения по горизонтали (одна оболочка вверху, вторая ниже)
  • Ctrl-A Tab активация оболочки в другой панели
  • Ctrl-A ? вызов подсказки
  • Ctrl-A d выход из Screen, оставив его работать в фоновом режиме (для повторного входа используйте команду screen -r)

Konsole

Konsole screen

Konsole - это программа эмуляции терминала, поставляемая в комплекте с рабочим столом KDE Plasma. Как и сам KDE, Konsole славится тем, что обладает широкими возможностями настройки.

Среди его многочисленных функций - возможности разделения окон, аналогичные имеющимся как в tmux, так и в GNU Screen. Поскольку Konsole - это графический терминал, вы можете управлять его функцией разделения экрана с помощью мыши, а не клавиатуры.

Функция разделения экрана находится в меню View Konsole. Вы можете разбить окно как по вертикали, так и по горизонтали. Чтобы активировать панель, достаточно щелкнуть по ней мышкой. Каждая панель представляет собой уникальный терминал, поэтому она может иметь собственную тему и вкладки.

В отличие от tmux и GNU Screen, вы не можете выйти из Konsole, оставив его работать в фоновом режиме, чтобы потом подключиться к нему снова. Как и большинство графических приложений, вы можете использовать Konsole только находясь перед ним физически, и теряете доступ к нему, когда находитесь где-то далеко (если вы не используете программное обеспечение удаленного рабочего стола).

Emacs

Emacs rpg

Emacs, конечно, не является терминальным мультиплексором, но его интерфейс поддерживает разделение и изменение размера окон, и он имеет встроенный терминал.

Если вы так или иначе работаете в Emacs ежедневно, то возможность разделить окно между разными по существу приложениями означает, что вам никогда не придется отказываться от своих привычек и конфорта работы в вашем любимом текстовом редакторе. Более того, поскольку модуль eshell в Emacs реализован на eLISP, вы можете взаимодействовать с ним, используя те же команды, которые вы используете в самом Emacs, что упрощает копирование и вставку длинных путей к файлам или вывод команд.

Если вы используете Emacs в графическом окне, вы можете выполнить некоторые действия с помощью мыши. Это быстрее чем использовать сочетания клавиш, причем некоторые из этих действий более или менее необходимы. Например, вы можете изменить то, какая панель является активной, щелкнув по ней, и вы можете изменить размеры панелей вашего разделенного экрана с помощью мыши.

Но все же приведем некоторые важные клавиатурные команды:

  • Ctrl-X 3 для разделения панели по вертикали (одна оболочка слева, вторая справа)
  • Ctrl-X 2 для разделения по горизонтали (одна оболочка вверху, вторая ниже)
  • Ctrl-X O активация оболочки в другой панели (вы можете сделать это и с помощью мыши)
  • Ctrl-X 0 (это ноль) закрыть текущую панель

Как и в случае с tmux и GNU Screen, вы можете отключаться от Emacs и снова входить в него до тех пор, пока запущен emacs-client.

Window manager

Ratpoison split screen

Если вас удивляет то, что текстовый редактор Emacs может разделить экран и загрузить терминал, представьте, что ваш рабочий стол может делать то же самое. Некоторые рабочие столы, например, Ratpoison, Herbsluftwm, i3, Awesome даже KDE Plasma, если задействовать специальные настройки, могут запускать каждое приложение в отдельном окне, размещая эти окна одно рядом с другим на вашем экране.

Окна в этом случае не "плавают" над вашим рабочим столом, а располагаются каждое в определенной позиции, позволяя вам лекго переключаться от одного из них к другому. Вы можете открыть любое количество терминалов в этих окнах, эмулируя терминальный мультиплексор. Фактически, вы даже можете загрузить терминальный мультиплексор в мультиплексор вашего рабочего стола.

И ничто не мешает вам загрузить Emacs с разделенными буферами внутрь одного из окон. Никто не знает, что произойдет, если вы продолжите в том же духе, и большинство пользователей Linux соглашаются, что лучше не узнавать.

В отличие от tmux и GNU Screen, вы не можете отключать и повторно подключать свой рабочий стол, если не используете программное обеспечение удаленного рабочего стола.

Другие варианты

Хотите верьте, хотите нет, но здесь перечислены не все варианты разделения экрана в Linux. Существуют и другие эмуляторы терминала, в первую очередь среди них можно назвать Tilix и Terminator, которые тоже позволяют разбить экран на части, и приложения со встроенными терминальными компонентами. Вы можете поделиться своим мнением о наиболее удобных способах разделения вашего рабочего пространства в комментариях к этой статье (имеется в виду, конечно, оригинальная статья).

Об авторе

Seth Kenlon независимый мультимедиа-дизайнер, сторонник свободной культуры и специалист по UNIX. Он работал в кино и компьютерной индустрии, часто одновременно. Он является одним из разработчиков проекта по созданию мультимедиа на базе Slackware http://slackermedia.info