tmux: терминальный мультиплексор
Зачем
tmux позволяет:
- Держать несколько терминалов в одном окне
- Не терять сессию при разрыве SSH-соединения
- Организовать рабочее пространство под проект: код, логи, сервер, БД, всё в одном месте
- Быстро переключаться между контекстами без alt-tab
Концепции
Иерархия
tmux → session (сессия — контейнер верхнего уровня, привязан к проекту) → window (окно — как вкладка в браузере) → pane (панель — сплит внутри окна)
Session: живёт пока не убьёшь явно. Отключился от SSH, а сессия продолжает работать. Window: полноэкранная вкладка внутри сессии. Переключение моментальное. Pane: разделение окна на части (вертикально/горизонтально).
Установка
Prefix-клавиша
Все команды tmux начинаются с prefix, по умолчанию Ctrl+b.
Нажимаешь prefix, отпускаешь, затем нажимаешь команду.
В примерах ниже <prefix> = Ctrl+b (или то, на что ты его переназначил).
Основные команды
Сессии
| Действие | Команда |
|---|---|
| Новая сессия | tmux new -s project |
| Список сессий | tmux ls |
| Подключиться к сессии | tmux attach -t project или tmux a -t project |
| Отключиться (сессия живёт) | <prefix> d |
| Убить сессию | tmux kill-session -t project |
| Переключиться между сессиями | <prefix> s (интерактивный список) |
| Переименовать сессию | <prefix> $ |
Окна (вкладки)
| Действие | Команда |
|---|---|
| Новое окно | <prefix> c |
| Следующее окно | <prefix> n |
| Предыдущее окно | <prefix> p |
| Окно по номеру | <prefix> 0..9 |
| Переименовать окно | <prefix> , |
| Закрыть окно | <prefix> & или exit |
| Список окон | <prefix> w (с превью) |
Панели (сплиты)
| Действие | Команда |
|---|---|
| Вертикальный сплит | <prefix> % |
| Горизонтальный сплит | <prefix> " |
| Переключение между панелями | <prefix> стрелки |
| Изменить размер панели | <prefix> Ctrl+стрелки |
| Закрыть панель | <prefix> x или exit |
| Развернуть панель на весь экран (toggle) | <prefix> z |
| Поменять панели местами | <prefix> { / <prefix> } |
| Показать номера панелей | <prefix> q |
Копирование и скролл
| Действие | Команда |
|---|---|
| Режим копирования (скролл) | <prefix> [ |
| Выход из режима копирования | q |
| Поиск в буфере | <prefix> [, затем / или ? |
| Вставить из буфера | <prefix> ] |
В режиме копирования навигация как в vim (hjkl, /, ?, n, N).
Командная строка tmux
<prefix> : открывает командную строку внизу. Полезные команды:
Dev-флоу: организация рабочего пространства
Структура сессии под проект
Идея: одна сессия = один проект. Внутри окна под разные задачи.
Структура сессии
session: myapp
- window 0: editor — nvim / код
- window 1: server — запущенный dev-сервер
- window 2: logs — логи приложения / docker logs
- window 3: db — psql / redis-cli / mongosh
- window 4: git — git операции, ветки, PR
Быстрый старт проекта (скрипт)
Создай скрипт ~/.local/bin/dev для автоматического поднятия рабочего окружения:
Работа с несколькими проектами
Паттерн: код + результат
Частый сценарий: редактор слева, результат справа.
<prefix> % — вертикальный сплит. Слева: nvim. Справа: запуск тестов, curl, docker и т.д.
<prefix> z — развернуть правую панель на весь экран (и обратно).
Паттерн: мониторинг
Окно logs с несколькими панелями:
<prefix> " — горизонтальный сплит (повторить для нескольких панелей).
- Панель 1:
docker logs -f app - Панель 2:
tail -f /var/log/app/error.log - Панель 3:
htop/btop
Конфигурация (~/.tmux.conf)
Минимальный конфиг для комфортной работы:
После изменения: <prefix> r (с конфигом выше) или tmux source ~/.tmux.conf.
Плагины (TPM)
Установка менеджера плагинов
Добавить в конец ~/.tmux.conf:
Установить плагины: <prefix> I (заглавная i).
Полезные плагины
| Плагин | Что делает |
|---|---|
tmux-resurrect | Сохраняет и восстанавливает сессии после перезагрузки (<prefix> Ctrl+s / <prefix> Ctrl+r) |
tmux-continuum | Автосохранение сессий каждые 15 минут |
tmux-yank | Копирование из tmux в системный буфер обмена |
tmux-sensible | Набор разумных настроек по умолчанию |
Шпаргалка: ежедневные команды
Начало дня: dev myapp ~/projects/myapp — поднять рабочее окружение.
В течение дня:
| Клавиша | Действие |
|---|---|
<prefix> c | новое окно |
<prefix> 1..9 | переключить окно |
<prefix> | | вертикальный сплит (с конфигом выше) |
<prefix> - | горизонтальный сплит (с конфигом выше) |
Alt + стрелки | переключение между панелями (с конфигом выше) |
<prefix> z | развернуть/свернуть панель |
<prefix> d | отключиться (сессия живёт) |
<prefix> s | переключиться между проектами |
<prefix> w | обзор всех окон всех сессий |
<prefix> [ | скролл / поиск в истории |
Конец дня: ничего не надо делать — сессии живут. После перезагрузки: tmux-resurrect восстановит всё.
Частые проблемы
Цвета в nvim/vim битые: добавь в конфиг set -g default-terminal "tmux-256color" и set -ag terminal-overrides ",*:RGB". В nvim: set termguicolors.
Задержка при нажатии Escape в vim: set -sg escape-time 0 в tmux.conf.
Не работает скролл мышью: set -g mouse on в tmux.conf.
Копирование не попадает в системный буфер: поставь tmux-yank или используй xclip/wl-copy вручную.
Новые окна/сплиты открываются в ~: используй флаг -c "#{pane_current_path}" (уже есть в конфиге выше).