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

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

Установка

Ubuntu/Debian

$ sudo apt install tmux

Синтаксис и опции команды Tmux

Синтаксис команды предельно простой, для создания новой сессии достаточно запустить утилиту без параметров. Для подключения к уже существующей придется использовать дополнительные опции. Вот основной синтаксис:

tmux команда опции

Что касается опций, то в большинстве вам придется использовать только две - это -t (target) - которая указывает цель, к которой будет применяться команда, например, идентификатор сессии или подключенного клиента, а также -s (session) - который обычно используется для обозначения источника, над которым будет выполняться действие.

Команды tmux для управления сессиями, которые вы можете использовать:

  • attach-session (attach) - подключиться к уже существующей сессии. В параметре необходимо передать опцию -t и идентификатор сессии;
  • detach-session (detach) - отключить всех клиентов (или переданного с помощью опции -t) от сессии, переданной в опции -s;
  • has-session - проверить существует ли сессия, аналогично, надо передать идентификатор сессии;
  • kill-server - остановить все запущенные сессии;
  • kill-session - завершить сессию переданную в параметре -t;
  • list-clients - посмотреть клиентов, подключенных к сессии -t;
  • list-sessions (ls) - вывести список всех запущенных сессий;
  • new-session - создать новую сессию, можно передать имя сессии в опции -s и стартовую директорию в опции -c;
  • rename-session - переименовать сессию, нужно передать идентификатор сессии и новое имя;

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

По умолчанию для активации сочетания клавиш нужно нажать Ctrl+B, отпустить, а потом нажать нужную клавишу. Вот основные сочетания клавиш tmux, которые вам понадобятся:

  • Ctrl+b c - создать новое окно;
  • Ctrl+b w - выбрать окно из списка;
  • Ctrl+b 0-9 - открыть окно по его номеру;
  • Ctrl+b , - переименовать текущее окно;
  • Ctrl+b % - разделить текущую панель по горизонтали;
  • Ctrl+b “ - разделить текущую панель по вертикали;
  • Ctrl+b стрелка - перейти на панель, находящуюся в стороне, куда указывает стрелка;
  • Ctrl+b Ctrl+стрелка - изменить размер текущей панели;
  • Ctrl+b o - перейти на следующую панель;
  • Ctrl+b ; - переключаться между текущей и предыдущей панелью;
  • Ctrl+b x - закрыть текущую панель;
  • Ctrl+b [ - войти в режим копирования (подробнее ниже);
  • Ctrl+b ] - вставить из внутреннего буфера обмена tmux;
  • Ctrl+b d - отключится от текущей сессии;
  • Ctrl+b : - открыть командную строку.

Для начала работы этих горячих клавиш будет достаточно. Шпаргалка tmux завершена, теперь перейдем к примерам работы с программой.

Как пользоваться tmux

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

Чтобы создать новую сессию достаточно выполнить команду без параметров:

$ tmux

Также можно создать сессию командой new-session и задать ей удобное имя:

$ tmux new-session -s byzoni

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

Окно сессии можно разделить на несколько панелей. Чтобы выполнить разделение по горизонтали нажмите Ctrl+b отпустите, а затем нажмите Shift+”:

Аналогично можно разделить панель по вертикали, нажав Ctrl+b, а затем Shift+%:

Размер активной панели можно менять нажав Ctrl+b, а потом Ctrl и стрелка:

А для переключения между панелями используйте клавиши Ctrl+b и стрелка. Сначала не привычно, но потом удобно.

3. Поддержка мышки

По умолчанию поддержка мышки отключена, но если вы работаете в графическом окружении, вы можете её включить. Это даст несколько преимуществ: вы сможете выбирать активную панель мышкой, копировать текст во внутренний буфер обмена, менять размер панелей, использовать прокрутку для просмотра истории вывода и так далее. Для этого откройте файл ~/.tmux.conf и добавьте туда следующие строки:

$ vim ~/.tmux.conf
set-option -g -q mouse on
bind-key -T root WheelUpPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; copy-mode -e; send-keys -M"
bind-key -T root WheelDownPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; send-keys -M"

Сохраните изменения, нажмите Ctrl+b :, а потом выполните такую команду чтобы перезагрузить tmux:

source ~/.tmux.conf

Настройка tmux завершена, теперь мышь будет работать.

4. Копирование и вставка

Одна из достаточно важных операций при работе с терминалом - это возможность что-то скопировать и куда-то перенести. После активации поддержки мышки вы можете просто выделить участок текста мышкой и он автоматически скопируется во внутренний буфер tmux.

Если вы хотите иметь возможность скопировать в системный буфер обмена, перед тем как выполнять действия мышкой зажмите Shift:

Кроме того, в tmux есть управление копированием и вставкой с помощью клавиш. Для перехода в режим копирования нажмите Ctrl+B [, затем переместите курсор к нужному месту с помощью стрелок. Кстати, этот режим можно использовать также для прокрутки. Потом нажмите Ctrl+пробел для начала выделения, выделите нужный фрагмент стрелками и нажмите Ctrl+w для копирования.

Чтобы вставить текст из внутреннего буфера обмена нужно нажать сочетание клавиш Ctrl+b ]. Для выхода из режима копирования используйте q или Esc.

5. Окна tmux

Кроме панелей в tmux можно открывать окна. Это аналог рабочих столов в Linux. Каждое окно привязано к определенной цифровой кнопке и имеет свой набор панелей. Для создания нового окна нажмите Ctrl+b c:

Список окон выводится внизу окна терминала. Для переключения на нужное окно нажмите Ctrl+b и номер окна.

6. Отключение от сессии

Чтобы отключиться от текущей сессии достаточно нажать сочетание клавиш Ctrl+b d.

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

7. Подключение к сессии

Посмотреть список сессий можно командой ls:

$ tmux ls

А для подключения используйте attach:

$ tmux attach -t byzoni

Ещё можно посмотреть список клиентов, подключенных к сессии:

$ tmux lc