Терминальный мультиплексор TMUX
При подключении к CLI создаётся новая сессия TMUX, в которой и происходит дальнейшая работа.
Особенности
-
Возможность создания многочисленных окон и панелей в них в пределах одной сессии.
-
Возможность скроллинга в консольном режиме, т.к. из последних версий ядра Linux удалена поддержка скроллинга по Shift-PgUp/PgDn.
-
Возможность отключиться от сессии и подключиться позднее к ранее созданной сессии.
-
Нечувствительность к потере связи при удалённом подключении.
-
Наличие внутреннего буфера обмена только в консольном режиме, также в ряде случаев возможность взаимодействия с системным буфером обмена пользователя.
Клавиатурные команды TMUX состоят из префикса и команды. Префикс вводится нажатием и отпусканием сочетания Ctrl-B. Затем нажимается клавиша команды. Далее сочетания клавиш записываются в виде Ctrl-B <клавиша>, например, Ctrl-B % или Ctrl-B s.
Вывод на экран списка клавиатурных команд TMUX, доступных в CLI
Помощь выводится так: нужно нажать Ctrl-B, отпустить обе клавиши и нажать клавишу "?". Для выхода из просмотра нужно нажать Esc или "q".
Сессии, окна и панели
Сессии
На одном хосте может быть одновременно запущено множество сессий TMUX, в каждой из сессий может быть открыто множество окон, и каждое окно может быть разделено на множество панелей. Сессия создаётся каждый раз, когда пользователь подключается к CLI, и закрывается, когда пользователь выходит из CLI по Ctrl-D (простое закрытие окна оставляет сессию работающей).
Посмотреть список сессий можно сочетанием Ctrl-B s. При этом в верхней половине экрана показан список сессий в
формате root-YYYYMMDD-HHMMSS: X windows
, где YYYYMMDD HHMMSS — дата и время входа в данную сессию, X — число
открытых в ней окон. В нижней части экрана будет показано содержимое нулевого окна данной сессии. Перемещение по списку
проводится стрелками вверх и вниз.
Подключиться к выбранной сессии можно нажатием Enter.
Удалить выбранное окно или сессию можно нажатием клавиши X. При этом цвет статусной строки сменится с зелёного на
оранжевый, появится запрос подтверждения удаления, в ответ на запрос нужно нажать клавишу y для удаления или любую
клавишу для отмены.
Подключение к активной сессии
При подключении к активной сессии (к которой уже подключен пользователь) изменения на обоих экранах будут синхронны, а разрешение экрана изменится на наименьший из размеров всех подключенных консолей.
Отключиться от сессии можно нажатием Ctrl-B d.
Окна
В новой сессии создаётся по умолчанию одно окно. Оно имеет номер 0. Создать окно можно сочетанием клавиш Ctrl-B c. При этом переключаться между окнами можно по номерам: Ctrl-B <номер окна>. Сочетание клавиш Ctrl-B w показывает список открытых окон всех сессий в том же формате, что и список сессий. Отличие в том, что в нижней части экрана показывается содержимое всех панелей выбранного окна.
Панели
Окно можно разделить на панели по вертикали или горизонтали. При этом содержимое панелей отображается независимо и одновременно. Сочетание клавиш Ctrl-B % разделяет окно по горизонтали (вертикальной чертой), а Ctrl-B " — по вертикали (горизонтальной чертой). Активную панель также можно разделить и так далее. Закрыть панель можно нажатием Ctrl-D. Переключение между панелями — щелчком "мыши" на нужной панели, или при отсутствии "мыши" — Ctrl-B стрелка, где стрелка — в направлении нужной панели относительно текущей.
Скроллинг
Скроллинг в TMUX производится переходом в особый режим Copy/Scroll.
-
При работе с терминалом с поддержкой "мыши" для перехода в этот режим нужно вращать колёсико "мыши" вверх.
-
Если доступна только клавиатура, то нужно нажать Ctrl-B "[" (левая квадратная скобка).
При этом в правом верхнем углу экрана появляется оранжевый маркер с указанием смещения текущего экрана от последней строки и текущей длины буфера прокрутки TMUX. В этом режиме доступен поиск вперёд и назад (сочетания клавиш Ctrl-S и Ctrl-R соответственно). При этом цвет нижней строки экрана меняется на оранжевый и предлагается ввести строку поиска.
Выход из этого режима — нажатие Esc или скроллинг "мышью" до нижней строки терминала.
Копирование и буферы обмена
TMUX обладает собственными буферами обмена для копирования и вставки текстовой информации.
Для выделения текста:
-
при поддержке "мыши" — нажать левую клавишу "мыши" и перемещать "мышь" либо использовать колесо, не отпуская левую клавишу.
-
без поддержки "мыши":
-
перейти в режим Copy/Scroll (нажать Ctrl-B [).
-
клавишами навигации перейти к краю нужного участка и нажать Ctrl-Space, далее клавишами навигации выделять текст.
-
Выделенный текст отображается оранжевым фоном.
Для окончания выделения текста и помещения его в буфер обмена:
-
при поддержке "мыши" — отпустить левую клавишу.
-
без поддержки "мыши" — нажать Ctrl-W.
При этом текст помещается в новый буфер обмена TMUX. Вставка из последнего буфера обмена производится по Ctrl-B ]
Список буферов обмена можно увидеть при помощи Ctrl-B =. При этом в верхней части экрана показывается объём содержимого буфера и дата его создания, а в нижней — содержимое. Нажатием Enter можно вставить текст из выбранного буфера обмена.
Примечание о взаимодействии с локальным буфером обмена пользователя
Важно понимать, что все вышеуказанные действия происходят на удалённой машине, и нужны определённые условия, чтобы выделенный текст из буфера обмена TMUX попал в буфер обмена локальной машины, на которой открыт сеанс подключения к CLI. Они описаны ниже.
Копирование из консоли возможно несколькими способами (рассматривается SSH или SOL подключение):
-
в пределах видимого окна или буфера прокрутки локального терминала и при поддержке "мыши" — нажатием Shift + левой клавиши "мыши" и перемещением "мыши";
-
без поддержки "мыши" ситуация усложняется. Существует протокол ANSI OSC 52, который позволяет вставлять текст в локальный буфер обмена путём передачи данных из удалённого буфера обмена особым образом вместе с основными текстовыми данными. Этот протокол поддерживается TMUX и должен поддерживаться терминалом на локальной машине.
Список терминалов, которые поддерживают ANSI OSC 52 (следовательно, выделенный текст из TMUX попадёт в буфер обмена локальной машины, если для соединения использован этот терминал):
Linux:
-
rxvt;
-
xterm (требует указания строки
XTerm*disallowedWindowOps: 20,21,SetXprop
в файл ~/.Xdefaults на локальной машине).
MacOS:
- iTerm2.
Windows:
- Windows Terminal.