В прошлом уроке мы создавали сессии и окна — «вкладки» в терминале. Но иногда вкладок недостаточно. Вы хотите одновременно видеть логи и набирать команды. Или следить за 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: сессия (независимое окружение) → окна (вкладки) → панели (разделение экрана).

Обсуждение урока

0
Комментарии видны всем. Чтобы участвовать в обсуждении, войдите или зарегистрируйтесь.
Модерация сообщества

Пожаловаться на комментарий

Расскажите модераторам, что именно требует внимания.