tmux — Terminal Multiplexer

If you like this project, consider supporting me on Buy Me a Coffee ☕️


tags:

Description: tmux (Terminal Multiplexer) is a command-line tool that allows you to create, manage, and navigate between multiple terminal sessions from a single window. Sessions persist after disconnection, making it essential for remote server management — SSH sessions survive connection drops. tmux (Terminal Multiplexer) — это инструмент командной строки для создания и управления несколькими терминальными сессиями из одного окна. Сессии сохраняются после отключения, что делает его незаменимым для удалённого управления серверами.

Status: Actively maintained. Alternatives: GNU Screen (older, simpler), Zellij (modern Rust-based terminal workspace with built-in layouts), byobu (tmux/screen wrapper with enhanced UI). Role: Developer / Sysadmin / DevOps


📘 Basics & Installation

What is tmux?

tmux = Terminal Multiplexer — allows you to work with multiple sessions, windows, and panes in one terminal. tmux = Терминальный мультиплексор — позволяет работать с несколькими сессиями, окнами и панелями в одном терминале.

Main prefix key / Главная клавиша префикса: Ctrl+b All commands are executed after pressing prefix / Все команды вводятся после префикса.

tmux Components

Component Description (EN / RU)
Server Background process managing all sessions / Фоновый процесс управляющий всеми сессиями
Session A collection of windows / Набор окон
Window A full-screen tab within a session / Полноэкранная вкладка внутри сессии
Pane A split within a window / Разделение внутри окна

Installation

sudo apt install tmux              # Debian/Ubuntu
sudo dnf install tmux              # RHEL/Fedora
sudo pacman -S tmux                # Arch
brew install tmux                  # macOS

🔧 Session Management

Basic Session Commands

tmux                                      # Start new session / Запустить новую сессию
tmux new -s <NAME>                        # Create named session / Создать именованную сессию
tmux attach                               # Attach to last session / Подключиться к последней сессии
tmux attach -t <NAME>                     # Attach by name / Подключиться к сессии по имени
tmux ls                                   # List all sessions / Показать список сессий
tmux kill-session -t <NAME>               # Kill specific session / Удалить конкретную сессию
tmux kill-server                          # Kill all sessions / Завершить все сессии
tmux detach                               # Detach from current session / Отсоединиться от текущей сессии
tmux new-session -d -s <NAME>             # Create detached session / Создать фоновую сессию

Session Switching

tmux switch -t <NAME>                     # Switch to session / Переключить сессию
tmux rename-session -t <OLD> <NEW>        # Rename session / Переименовать сессию

Key Bindings

Ctrl+b d                                  # Detach from session / Отсоединиться от сессии
Ctrl+b D                                  # Choose session to detach / Выбор сессии для отсоединения
Ctrl+b s                                  # List sessions / Список сессий
Ctrl+b $                                  # Rename current session / Переименовать текущую сессию

🪟 Window Management

Window Commands

Ctrl+b c                                  # Create new window / Создать новое окно
Ctrl+b w                                  # List all windows / Список окон
Ctrl+b n                                  # Next window / Следующее окно
Ctrl+b p                                  # Previous window / Предыдущее окно
Ctrl+b l                                  # Last active window / Последнее активное окно
Ctrl+b &                                  # Close current window / Закрыть текущее окно
Ctrl+b ,                                  # Rename window / Переименовать окно
Ctrl+b f                                  # Find window / Найти окно
Ctrl+b 0-9                                # Switch to window N / Переключиться на окно N

Rename Window

tmux rename-window <NAME>                 # Rename current window / Переименовать текущее окно

🔲 Pane Management

Split Panes

Ctrl+b %                                  # Split vertically / Вертикальный сплит
Ctrl+b "                                  # Split horizontally / Горизонтальный сплит
Ctrl+b ↑↓←→                               # Move between panes / Перемещение между панелями
Ctrl+b o                                  # Next pane / Следующая панель
Ctrl+b ;                                  # Last active pane / Предыдущая панель
Ctrl+b q                                  # Show pane numbers / Показать номера панелей

Manage Panes

Ctrl+b x                                  # Kill current pane / Удалить панель
Ctrl+b z                                  # Toggle zoom pane / Развернуть/свернуть панель
Ctrl+b !                                  # Break pane to new window / Вынести панель в новое окно
Ctrl+b {                                  # Move pane left / Переместить панель влево
Ctrl+b }                                  # Move pane right / Переместить панель вправо

Resize Panes

Ctrl+b Alt+↑↓←→                           # Resize pane / Изменить размер панели
Ctrl+b Space                              # Change layout / Сменить раскладку
Ctrl+b M-1                                # Even horizontal layout / Горизонтальная раскладка
Ctrl+b M-2                                # Even vertical layout / Вертикальная раскладка
Ctrl+b M-3                                # Main horizontal layout / Основная горизонтальная
Ctrl+b M-4                                # Main vertical layout / Основная вертикальная
Ctrl+b M-5                                # Tiled layout / Мозаичная раскладка

📋 Copy Mode & Buffers

Copy Mode

Ctrl+b [                                  # Enter copy mode / Войти в режим копирования
↑ ↓ PgUp PgDn                             # Scroll / Пролистывать экран
Space                                     # Start selection / Начать выделение
Enter                                     # Copy selected text / Копировать выделенный текст
Ctrl+b ]                                  # Paste buffer / Вставить буфер

Buffer Management

tmux show-buffer                          # Show buffer content / Показать содержимое буфера
tmux save-buffer <FILE>                   # Save buffer to file / Сохранить буфер в файл
tmux load-buffer <FILE>                   # Load buffer from file / Загрузить буфер из файла
tmux paste-buffer                         # Paste buffer / Вставить буфер

⚙️ Configuration

Configuration File

~/.tmux.conf

# Performance
set -sg escape-time 0                     # Remove prefix delay / Убрать задержку префикса
set -g history-limit 10000                # History limit / Лимит истории

# Mouse Support
set -g mouse on                           # Enable mouse / Включить мышь

# Indexing
set -g base-index 1                       # Window start from 1 / Нумерация окон с 1
setw -g pane-base-index 1                 # Pane start from 1 / Нумерация панелей с 1

# Prefix Key
unbind C-b                                # Unbind default prefix / Отвязать стандартный префикс
set -g prefix C-a                         # Set new prefix to Ctrl+a / Установить новый префикс Ctrl+a
bind C-a send-prefix                      # Forward prefix / Передать префикс

# Status Bar
set -g status-bg black                    # Status bar background / Фон строки состояния
set -g status-fg white                    # Status bar foreground / Цвет текста
set -g status-left "#S"                   # Show session name left / Показать имя сессии слева
set -g status-right "%Y-%m-%d %H:%M"      # Show time right / Показать время справа

Reload Configuration

tmux source-file ~/.tmux.conf             # Reload config / Перезагрузить конфигурацию

Inside tmux command prompt (Ctrl+b :):

:source-file ~/.tmux.conf                 # Reload from prompt / Перезагрузить из командной строки

Key Bindings Quick Reference

General

Ctrl+b ?                                  # Show all key bindings / Показать все сочетания клавиш
Ctrl+b t                                  # Show clock / Показать часы
Ctrl+b :                                  # Command prompt / Командная строка

Custom Commands

tmux list-keys                            # List all key bindings / Список всех сочетаний клавиш
tmux info                                 # Show session info / Показать информацию о сессии

Default Shortcuts Summary

Shortcut Action (EN / RU)
Ctrl+b c New window / Новое окно
Ctrl+b % Vertical split / Вертикальный сплит
Ctrl+b " Horizontal split / Горизонтальный сплит
Ctrl+b d Detach / Отсоединиться
Ctrl+b [ Copy mode / Режим копирования
Ctrl+b z Zoom pane / Развернуть панель
Ctrl+b ? Help / Справка
Ctrl+b x Kill pane / Удалить панель
Ctrl+b n/p Next/Previous window / Следующее/Предыдущее окно

🌟 Real-World Examples

Quick Start Workflow

# Create development session
tmux new -s dev

# Create windows
Ctrl+b c                                  # New window for editor / Новое окно для редактора
Ctrl+b c                                  # New window for terminal / Новое окно для терминала

# Split panes
Ctrl+b %                                  # Vertical split / Вертикальный сплит

# Detach and reattach
Ctrl+b d                                  # Detach / Отсоединиться
tmux attach -t dev                        # Reattach / Подключиться обратно

Development Environment

# Create project session with 3 windows
tmux new -s project
tmux rename-window editor
tmux new-window -n servers
tmux new-window -n logs

# Split panes for monitoring
Ctrl+b %                                  # Split for logs / Разделить для логов

Remote Server Management

# SSH to server and create session / SSH
ssh user@<SERVER>
tmux new -s maintenance

# Work safely - connection drops won't kill session
#

# Reconnect later
ssh user@<SERVER>
tmux attach -t maintenance

Pair Programming

# User 1: Create shared session
tmux new -s shared

# User 2: Attach to same session
ssh <USER>@<HOST>
tmux attach -t shared

Kill Detached Sessions

# Remove all detached sessions
tmux ls | grep -v attached | cut -d: -f1 | xargs -n1 tmux kill-session -t

Scripted Session Setup

#!/bin/bash
# Create a full development environment
tmux new-session -d -s dev -n editor
tmux send-keys -t dev:editor 'vim .' C-m
tmux new-window -t dev -n server
tmux send-keys -t dev:server 'npm run dev' C-m
tmux new-window -t dev -n logs
tmux send-keys -t dev:logs 'tail -f /var/log/app.log' C-m
tmux select-window -t dev:editor
tmux attach -t dev

💡 Useful Tips

Aliases

Add to ~/.bashrc or ~/.zshrc:

alias ta='tmux attach -t'                # Quick attach / Быстрое подключение
alias tn='tmux new -s'                   # Quick new session / Быстрое создание сессии
alias tls='tmux ls'                      # Quick list / Быстрый список
alias tkill='tmux kill-session -t'       # Quick kill / Быстрое удаление

Terminal Multiplexer Comparison

Tool Description (EN / RU) Best For
tmux Feature-rich multiplexer / Функциональный мультиплексор Power users, scripting
GNU Screen Classic multiplexer / Классический мультиплексор Legacy systems, simplicity
Zellij Modern Rust-based workspace / Современный workspace на Rust New users, built-in layouts
byobu tmux/screen wrapper / Обёртка для tmux/screen Enhanced UI out of the box

Best Practices

Common Issues

Issue Solution (EN / RU)
Nested tmux Press prefix twice (Ctrl+b Ctrl+b) / Нажмите префикс дважды
Wrong colors set -g default-terminal "screen-256color" in .tmux.conf / Установить 256-цветный терминал
Clipboard not working Install xclip (Linux) or use pbcopy (macOS) / Установить xclip или использовать pbcopy

Configuration Files

File Description (EN / RU)
~/.tmux.conf User configuration / Пользовательская конфигурация
/etc/tmux.conf System-wide configuration / Системная конфигурация

Official Documentation

On this page

sysadmin tmux Cheatsheet — Terminal Multiplexer 📘 Basics &amp; Installation What is tmux? tmux Components Installation 🔧 Session Management Basic Session Commands Session Switching Key Bindings 🪟 Window Management Window Commands Rename Window 🔲 Pane Management Split Panes Navigate Panes Manage Panes Resize Panes 📋 Copy Mode &amp; Buffers Copy Mode Buffer Management ⚙️ Configuration Configuration File Reload Configuration Key Bindings Quick Reference General Custom Commands Default Shortcuts Summary 🌟 Real-World Examples Quick Start Workflow Development Environment Remote Server Management Pair Programming Kill Detached Sessions Scripted Session Setup 💡 Useful Tips Aliases Terminal Multiplexer Comparison Best Practices Common Issues Configuration Files Official Documentation