Основы работы в Tmux, конфигурация, кастомизация

Tmux - мультиплексор, позволяющий запускать несколько терминалов в одном окне, доступен для всех unix-подобный систем (Linux, macOS, BSD).

Установка

# Ubuntu, Debian
$ sudo apt-get install tmux

# CentOS, Fedore
$ yum install tmux

# macOS
$ brew install tmux

Интерфейс

После запуска tmux, снизу появляется статус бар, а так же при разделении окон появляется рамки вокруг панели. В этом и все особености при работе в tmux.

интерфейс tmux
tmux

Из статус бара можно узнать можно узнать имя текущей сесси в квадратных скобках [0], так же мы видим что сейчас открыты два окна под номерами 0 и 1, звездочка показывает текущее окно. Так же видно имя компьютера и время с датой. Так же стоит упомянуть что перед всеми командами в tmux необходимо ставить префикс, для этого просто необходимо использовать сочетание клавиш Ctrl + b, префикс можно изменить.

Сессии

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

# Запуск tmux, по умолчанию создастся сессия с именем 0
$ tmux

# Создать новую сессию с именем 'test'
$ tmux new-session -s test
$ tmux new -s test

# Подключиться к последней розданной сессии
$ tmux attach
$ tmux at
$ tmux a

# Подключиться к сессии с именем 'test'
$ tmux attach -t test
$ tmux at -t test
$ tmux a -t test

# Отключиться от текущей сессии
$ tmux detach

# Просмотреть все сессии
$ tmux ls

# Закрыть сессию с именем 'test'
$ tmux kill-session -t test

# Закрыть все сессии
$ tmux kill-server

# Закрыть окно, панель или сессию
$ exit

Так же существуют команды сессий:

d - отключиться от текущей сессии
s - список всех сессий, можно подключиться к нужной
( - перейти к предыдущей сессии
) - перейти к следующей сессии
$ - переименовать сессию

Окна (табы)

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

c - создать новое окно
w - список окон, можно переключаться
n - переключиться на следующее окно
p - переключиться на предыдущее окно
[num] - переключиться на нужный номер окна
x - закрыть окно (только если одна панель, иначе закроется панель)
f - поиск окна
, - переименовать окно
& - закрыть окно

Панели

Главная фишка tmux это работа с панелями мы можем разбивать окно на несколько панелей. Основные команды для работы с панелями:

" - разбить окно по горизонтали
% - разбить окно по вертикали
↑ → ↓ ← - перемещение между панелями
Ctrl + b + ↑ → ↓ ← - изменение размеров панели
x - закрыть панель
o - переключение между всеми панелями по очереди
; - перейти к последней используемой панели
q - показать номера панелей
Space - переключение режимов отображения
} - переместить текущую панель вправо
{ - переместить текущую панель влево
z - развернуть текущую панель на весь экран

Дополнительные команды:

: - открыть командную строку в статус баре
? - список всех комбинаций клавиш
t - вывод часов на всю панель\

Режим копирования

Вы можете переключиться в режим копирования для этого необходимо выполнить команду: Ctrl + b [, что бы вставить нужно выполнить команду Ctrl + b ] По умолчанию терминал работает в режиме emacs, можно работать в режиме vi.

Основные команды для vi:

Space - начать выделение текста
Esc - очистить выделение текста
Enter - скопировать выделенную область
h j k l - перемещение курсора
^ - переместиться в начало строки
$ - переместиться в конец строки

Основные команды для emacs:

Ctrl + Space - начать выделение текста
Ctrl + g - очистить выделение текста
Alt + w - скопировать выделенную область
↑ → ↓ ← - перемещение курсора
Alt + m - переместиться в начало строки
Ctrl + e - переместиться в конец строки

Конфигурация

Tmux имеет глобальный /etc/tmux.conf и пользовательский файл конфигурации ~/.tmux.conf Работать мы будем с пользовательским файлом конфигурации.

# Изменение префикса на Ctrl + a
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# Нумерация окон с единицы
set -g base-index 1

# Переключение режима копирования в vi
setw -g mode-keys vi

# Включение режима мыши (скроллинг, перемещение, размеры)
set -g mouse on

# Увеличить историю скролла до 5000 строк
set -g history-limit 5000

# Центрировать список окон в статус баре
set -g status-justify centre

# Перебиндиваем стандартные команды на vi-подобные
# Разделение окон
bind-key v split-window -h
bind-key s split-window -v

# Перемещение между окнами
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R

Кастомизация

Tmux можно кастомизировать, изменения в основном применяются к статус бару, и цветовой палитре. Вот несколько репозиториев с разными темами: .tmux, nord-tmux, tmux-themepack.

Видео

Вы так же можете посмотреть моё видео по tmux на youtube ссылка