Организовать рабочее пространство под проект: код, логи, сервер, БД, всё в одном месте
Быстро переключаться между контекстами без alt-tab
Концепции
tmux
└── session (сессия) — контейнер верхнего уровня, привязан к проекту
└── window (окно) — как вкладка в браузере
└── pane (панель) — сплит внутри окна
Session: живёт пока не убьёшь явно. Отключился от SSH, а сессия продолжает работать.
Window: полноэкранная вкладка внутри сессии. Переключение моментальное.
Pane: разделение окна на части (вертикально/горизонтально).
:new-window -n logs # новое окно с именем
:split-window -h # горизонтальный сплит
:resize-pane -D 10 # увеличить панель на 10 строк вниз
:swap-window -t 0 # переместить окно на позицию 0
Dev-флоу: организация рабочего пространства
Структура сессии под проект
Идея: одна сессия = один проект. Внутри окна под разные задачи.
Создай скрипт ~/.local/bin/dev для автоматического поднятия рабочего окружения:
#!/bin/bash
# ~/.local/bin/dev# Использование: dev myapp /path/to/projectSESSION="${1:-dev}"PROJECT_DIR="${2:-.}"# Если сессия уже есть — подключитьсяtmux has-session -t "$SESSION" 2>/dev/null && exec tmux attach -t "$SESSION"# Создать сессиюtmux new-session -d -s "$SESSION" -c "$PROJECT_DIR" -n editor
# Окно: серверtmux new-window -t "$SESSION" -n server -c "$PROJECT_DIR"# Окно: логиtmux new-window -t "$SESSION" -n logs -c "$PROJECT_DIR"# Окно: gittmux new-window -t "$SESSION" -n git -c "$PROJECT_DIR"# Вернуться на первое окноtmux select-window -t "$SESSION:editor"# Подключитьсяtmux attach -t "$SESSION"
chmod +x ~/.local/bin/dev
dev myapp ~/projects/myapp
Работа с несколькими проектами
# Утро: поднял два проектаdev frontend ~/projects/frontend
# <prefix> d — отключилсяdev backend ~/projects/backend
# <prefix> d — отключился# Переключение между проектами:# <prefix> s — интерактивный список сессий# или напрямую:tmux switch-client -t frontend
Паттерн: код + результат
Частый сценарий: редактор слева, результат справа.
<prefix> % # вертикальный сплит
# Слева: nvim
# Справа: запуск тестов, curl, docker и т.д.
<prefix> z # развернуть правую панель на весь экран (и обратно)
Сохраняет и восстанавливает сессии после перезагрузки (<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}" (уже есть в конфиге выше).