Tmux — удобнейший терминальный мультиплексор

TmuxПри освоении возможностей консоли linux рано или поздно наступает момент, когда нужно в терминале без вкладок (а то и без графического интерфейса) запустить сразу несколько программ и удобно переключаться между ними. Хорошо, что все уже придумано до нас, причем в таком удобном виде!

Установка

Как обычно, для систем, основанных на Debian, установка сводится к одной команде:

sudo apt-get install tmux

Использование

Я разберу лишь часть возможностей, которые предоставляет tmux. Для получения более подробной информации есть: man tmux

1. Создание сессии

Tmux работает по принципу клиент-сервер, что дает некоторые преимущества. Например, если вы закроете терминал, все открытые в нем программы продолжат работать в фоне.

Простейший вариант создания сессии: просто вводим команду:

tmux

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

2. Управление Tmux

Tmux управляется при помощи сочетаний клавиш. Запомнить их не так трудно, нужно лишь немного привыкнуть. Сочетания клавиш здесь составные:
1) Сначала нажимаем первое сочетание (оно всегда одинаково): Ctrl-b
2) После этого нажимаем нужную клавишу для подачи команды. (разберем ниже)
Ниже все сочетания клавиш будут указываться в формате Ctrl-b + клавиша

3. Создание окон

Окна в панели TmuxПростейший способ запустить несколько программ и переключаться между ними - создание окон.

Сочетания клавиш для управления окнами:
1) Создание окна: Ctrl-b + C
2) Переключение на следующее окно: Ctrl-b + N
3) Переключение на предыдущее окно: Ctrl-b + P
4) Закрытие окна: Ctrl-b + X только если не открыты панели (см. ниже)

4. Разделение окон на панели

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

Терминальное безумие
Только зачем?

Сочетания клавиш для управления панелями:
1) Разбить панель по вертикали: Ctrl-b + %
Снимок экрана от 2014-03-29 02:04:372) Разбить панель по горизонтали: Ctrl-b + "
Разбитие панели по горизонтали
3) Перемещение по панелям: Ctrl-b + стрелки. Для перемещения через несколько панелей необязательно повторять много раз Ctrl-b: можно за один заход переместиться несколько раз, просто нажимая стрелки.
4) Закрыть текущую панель: Ctrl-b + x (и нажать Y для подтверждения)

У панелей также можно изменять размеры, перемещая их границы: зажимаем Ctrl-b и пользуемся стрелками. Нужно немного поэкспериментировать, чтобы понять, какая именно граница будет двигаться.
Перемещение границ панелей

5. Работа программ в фоне

Ну и еще одна возможность, предоставляемая Tmux, - перемещение работающих программ в фон и обратно. Также эта функция спасает работу в случае потери соединения с SSH сервером, так как программы продолжат работать до присоединения сессии обратно.

1) Для отсоединения текущей сессии tmux, нужно ввести команду:

tmux detach

или воспользоваться сочетанием клавиш Ctrl-b + D
2) Для возврата в эту сессию, нужно ввести команду: 

tmux attach

6. Внутренние команды настройки

В tmux есть множество внутренних команд для изменения настроек. Ниже я буду добавлять те команды, которые я использую. Ввод команд производится во внутренней командной строке, доступ к которой можно получить при помощи сочетания клавиш Ctrl-b + :.

Также не обязательно вводить эти команды каждый раз при запуске tmux! Чтобы команды вводились автоматически, нужно добавить их в файл ~/.tmux.conf, а если его не существует, то его нужно создать.

1) Колесико мыши для промотки истории вывода в консоли

Оказалось, что tmux поддерживает работу с мышью! Можно проматывать историю вывода консоли при помощи колесика мыши. Для активации этой настройки нужно ввести следующую команду:

setw -g mode-mouse on

Однако у этого метода есть один побочный эффект: нельзя выделить текст при помощи простого клика мышью. Однако эта возможность доступна, если при выделении зажать клавишу Shift.

2) Выбор активной панели при помощи клика мышью

Больше не нужно переключать панели при помощи сочетаний клавиш! Достаточно просто кликнуть мышью по нужной панели, и она станет активной. Чтобы активировать эту опцию, нужно ввести следующую команду:

set -g mouse-select-pane on

3) Выбор активного окна при помощи клика мышью по нему в нижней панели

Эта команда вообще сможет превратить окно tmux в полноценный рабочий стол. Команда для активации этой опции:

set -g mouse-select-window on

Теперь нижняя панель работает как привычная панель задач.

4) Синхронизация панелей для одновременного ввода во все открытые панели

Иногда, например когда я настраиваю Raspberry Pi, мне нужно выполнить одинаковые действия на обеих малинках одновременно. Оказалось, что в tmux есть функция синхронизации всех панелей в окне!

Для активации этой функции нужно разбить окно на несколько панелей (см. выше) и ввести следующую команду в tmux:

setw synchronize-panes on

После ввода этой команды, все нажатые вами клавиши будут передаваться во все панели, находящиеся в данном окне.

Для отключения этой функции нужно ввести следующую команду:

setw synchronize-panes off

Заключение

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

Спасибо за внимание :3