В прошлом уроке мы создавали сессии и окна — «вкладки» в терминале. Но иногда вкладок недостаточно. Вы хотите одновременно видеть логи и набирать команды. Или следить за htop в углу, пока деплоите в основном окне. Переключаться между вкладками — можно, но вы не видите обе сразу.
Для этого tmux умеет разделять окно на панели (panes) — несколько терминалов на одном экране, каждый работает независимо. Два способа разделить экран:
# Разделить горизонтально (верх и низ)
Ctrl+B, "
# Разделить вертикально (лево и право)
Ctrl+B, %
Да, кавычка и процент. Не самые интуитивные клавиши — но в них есть логика: " — горизонтальная линия разделяет экран, % — вертикальная (если прищуриться, два кружка в символе % — это два окна рядом). Ладно, логика сомнительная. Просто запомните — или перенастройте позже.
После разделения вы видите два терминала на одном экране. Курсор — в одном из них. Как переключиться на другой?
# Переключение между панелями
Ctrl+B, стрелка (←↑↓→)
Нажали Ctrl+B, потом стрелку влево — курсор перепрыгнул в левую панель. Каждая панель — полноценный терминал. В одном vim, в другом journalctl -f, в третьем шелл для команд. Всё на одном экране.
Ещё несколько команд для работы с панелями:
# Закрыть текущую панель
exit (или Ctrl+D)
# Развернуть панель на весь экран (и обратно)
Ctrl+B, Z
# Показать номера панелей (для быстрого переключения)
Ctrl+B, Q (потом нажать цифру)
# Переместить панель (поменять местами)
Ctrl+B, { (сдвинуть назад)
Ctrl+B, } (сдвинуть вперёд)
Ctrl+B, Z — особенно полезная штука. Вы работаете в маленькой панели, нужно больше места — Z, и панель занимает весь экран. Закончили — Z снова, и раскладка вернулась. Как зум на одну панель. В статус-баре при этом появится буква Z рядом с именем окна — чтобы вы не забыли, что работаете в «зуме».
Теперь — копирование текста. В обычном терминале вы выделяете мышкой и копируете через Ctrl+Shift+C. В tmux это не всегда работает — потому что tmux перехватывает мышь. У tmux есть свой режим копирования:
# 1. Войти в режим копирования
Ctrl+B, [
# 2. Перемещаться стрелками (или vim-клавишами: h, j, k, l)
# Можно также листать: PgUp, PgDn
# 3. Начать выделение
Space
# 4. Двигать курсор — текст выделяется
# 5. Скопировать
Enter
# 6. Вставить
Ctrl+B, ]
На первый взгляд — сложно. Но на практике вы привыкнете за пару дней. А главное — это единственный способ скопировать текст, который уже ушёл за пределы экрана. Прокрутка вверх в tmux работает именно через режим копирования: Ctrl+B, [, потом стрелки вверх или PgUp.
Кстати,
Ctrl+B, [— это ещё и способ прокрутки. Хотите посмотреть, что было выше?Ctrl+B, [, листаете стрелками или PgUp. Нашли нужное —Qдля выхода. Без этого прокрутка в tmux не работает — обычный скролл мышкой прокручивает «под» tmux.
И наконец — настройка. Конфиг tmux лежит в ~/.tmux.conf. По умолчанию его нет — создайте:
nano ~/.tmux.conf
Вот минимальный конфиг, который делает tmux значительно удобнее:
# Включить мышь (выделение, клик по панелям, скролл)
set -g mouse on
# Нумерация окон с 1 (а не с 0 — удобнее на клавиатуре)
set -g base-index 1
setw -g pane-base-index 1
# Более интуитивное разделение панелей
bind | split-window -h # Ctrl+B, | — вертикально
bind - split-window -v # Ctrl+B, - — горизонтально
# Увеличить буфер истории (по умолчанию 2000 строк)
set -g history-limit 10000
# Не переименовывать окна автоматически
set -g allow-rename off
После сохранения — перезагрузите конфиг (изнутри tmux):
tmux source-file ~/.tmux.conf
Или пропишите хоткей для перезагрузки прямо в конфиге (очень удобно при экспериментах):
# Ctrl+B, R — перезагрузить конфиг
bind R source-file ~/.tmux.conf \; display "Config reloaded!"
Теперь Ctrl+B, R — и изменения применяются мгновенно.
Полная шпаргалка — с учётом прошлого и этого уроков:
| Действие | Команда |
| --- | --- |
| Сессии |
| Создать | tmux new -s имя |
| Отсоединиться | Ctrl+B, D |
| Подключиться | tmux attach -t имя |
| Список | tmux ls |
| Убить | tmux kill-session -t имя |
| Окна (вкладки) |
| Новое окно | Ctrl+B, C |
| Следующее / предыдущее | Ctrl+B, N / P |
| По номеру | Ctrl+B, 0-9 |
| Переименовать | Ctrl+B, , |
| Панели (разделение экрана) |
| Горизонтально | Ctrl+B, " (или - с конфигом) |
| Вертикально | Ctrl+B, % (или | с конфигом) |
| Переключение | Ctrl+B, стрелка |
| Зум | Ctrl+B, Z |
| Закрыть | exit или Ctrl+D |
| Прочее |
| Прокрутка / копирование | Ctrl+B, [ |
| Вставить | Ctrl+B, ] |
Подведём итог. Панели — это способ видеть несколько терминалов одновременно, не переключаясь между вкладками. Режим копирования — единственный способ прокрутки и копирования в tmux. А конфиг ~/.tmux.conf — место, где tmux превращается из «странной программы с неудобными хоткеями» в «инструмент, без которого я не могу работать».
Сессии, окна, панели — три уровня организации в tmux. Освоили все три — значит, вы готовы к любой работе на удалённом сервере. В следующем уроке — vim на продвинутом уровне: не только :wq, а инструмент, которым реально можно редактировать код.
Панели (panes) — разделение окна на несколько терминалов. Ctrl+B, " — горизонтально, Ctrl+B, % — вертикально. Переключение стрелками.
Ctrl+B, Z — зум: развернуть панель на весь экран и обратно.
Ctrl+B, [ — режим копирования и прокрутки. Space — начать выделение, Enter — скопировать, Ctrl+B, ] — вставить.
~/.tmux.conf — файл настроек. Ключевые: set -g mouse on (мышь), base-index 1 (нумерация с 1), history-limit 10000 (буфер прокрутки).
Три уровня tmux: сессия (независимое окружение) → окна (вкладки) → панели (разделение экрана).