# Tmux

## Настройка

**Tmux** можно настроить как для текущего пользователя(**~/.tmux.conf**) так и для всей системы.

С версии 2.1 для включения режима мыши (прокручивание, изменение размера панели, выбор панели и др.) нужно добавить в **tmux.conf** строку:

`set -g mouse on`

До версии 2.1 это было так:

```
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
set -g mode-mouse on
```

## Работа с tmux

Для работы с **tmux** используется широкий набор горячих клавиш, состоящих из базового сочетания `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>` и отдельных целевых клавиш: n,p,w,b и т.д.

### Работа с сеансами в tmux

Для создания рабочего сеанса без идентификатора — достаточно ввести `tmux` в терминале. Будет создан сеанс 0:

[![изображение.png](https://docs.nix-adm.ru/uploads/images/gallery/2025-01/scaled-1680-/izobrazenie.png)](https://docs.nix-adm.ru/uploads/images/gallery/2025-01/izobrazenie.png)

Идентификатор сеанса отображается внизу слева в квадратных скобках. Для создания именного сеанса достаточно ввести команду `tmux new <span class="hljs-_">-s</span> название сеанса`.

Поскольку **tmux** завершает соединение с сохранением состояния сеанса, правильным способом возобновить работу **tmux** будет его запуск командой `tmux attach || tmux new`.

Команда запускает проверку уже созданных сеансов и если активных подключений нет — создается новое подключение.

Просмотреть список созданных сеансов можно командой `tmux ls`.

Команда вернёт список вида `0: 1 windows (created Mon Aug 30 13:02:31 2021) (attached)`.

Если в списке один сеанс, то командой `tmux attach` он будет автоматически восстановлен, а если в списке несколько сеансов — необходимо ввести команду `tmux attach -t наименование сеанса`.

В нашем случае сеанс называется 0.

Сменить сеанс можно также, находясь в другом сеансе. Для этого нужно воспользоваться сочетанием клавиш `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">s</span>`.

[![изображение.png](https://docs.nix-adm.ru/uploads/images/gallery/2025-01/scaled-1680-/lCcizobrazenie.png)](https://docs.nix-adm.ru/uploads/images/gallery/2025-01/lCcizobrazenie.png)

Выйти из сеанса можно с помощью сочетания клавиш `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">d</span>`, а завершить его командой `tmux <span class="hljs-built_in">kill</span>-session -t название сеанса`.

Закрыть все сеансы можно командой `tmux <span class="hljs-built_in">kill</span>-server`.

### Создание окон и переключение между ними

Чтобы создать окно — применяется сочетание клавиш: `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>`, а затем `<span class="key_bg_c_red">c</span>`. Просмотреть список окон можно сочетанием — `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>`, а затем `<span class="key_bg_c_red">w</span>`. Выбор конкретного окна из списка осуществляется стрелками <span class="key_bg_c_red">↑</span> и <span class="key_bg_c_red">↓</span>.

Переключиться между окнами можно с помощью следующих сочетаний клавиш:

- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">n</span>` — следующее окно;
- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">p</span>` — предыдущее окно;
- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, номер окна (цифрой )` — переключиться на нужное окно.

### Горизонтальное и вертикальное деление окон

Окна сеансов **tmux** можно разделять вертикально и горизонтально. Для горизонтального разделения окна используется сочетание клавиш `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, "`.

[![изображение.png](https://docs.nix-adm.ru/uploads/images/gallery/2025-01/scaled-1680-/07hizobrazenie.png)](https://docs.nix-adm.ru/uploads/images/gallery/2025-01/07hizobrazenie.png)

Чтобы разделить окно вертикально на две равные панели — воспользуйтесь сочетанием клавиш `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">%</span>`.

[![изображение.png](https://docs.nix-adm.ru/uploads/images/gallery/2025-01/scaled-1680-/1jSizobrazenie.png)](https://docs.nix-adm.ru/uploads/images/gallery/2025-01/1jSizobrazenie.png)

Перемещаться между панелями можно с помощью сочетаний клавиш `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>` и стрелок.

Панели тоже можно разделять. Например, если нужно получить 3 панели, сначала окно делится горизонтально (`<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>,"`), затем осуществляется переход на нужную панель (`<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">↑</span> или <span class="key_bg_c_red">↓</span>`) и она делится вертикально (`<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">%</span>`). Получаем следующую рабочую зону:

[![изображение.png](https://docs.nix-adm.ru/uploads/images/gallery/2025-01/scaled-1680-/dqoizobrazenie.png)](https://docs.nix-adm.ru/uploads/images/gallery/2025-01/dqoizobrazenie.png)

Закрыть панель (часть окна) можно с помощью сочетания клавиш `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">x</span>` или командой `exit`.

Команд и горячих клавиш **tmux** немало, но при ежедневной практике они довольно быстро выучиваются, однако новички поначалу путаются в них, поэтому мы составили список часто используемых команд и горячих клавиш **tmux**, и положили их в одно место.

### Список часто используемых команд и горячих клавиш tmux

**Команды для управления сеансами**:

- `<span class="inline_black">tmux new [имя_сеанса]</span>` — начать новый сеанс. `Имя_сеанса` опционально;
- `<span class="inline_black">tmux attach -t [имя_сеанса]</span>` — подключиться к уже существующему сеансу. Если имя заранее не было задано, тогда команда будет выглядеть так: `<span class="inline_black">tmux attach -t 0</span>`;
- `<span class="inline_black">tmux ls</span>` — список открытых сеансов tmux;
- `<span class="inline_black">tmux kill-server</span>` — остановить все запущенные сеансы;
- `<span class="inline_black">tmux kill-session -t [имя_сеанса]</span>` — завершить сеанс;
- `<span class="inline_black">tmux list-clients -t [имя_сеанса]</span>` — посмотреть клиентов, подключенных к сеансу;
- `<span class="inline_black">tmux list-sessions</span>` — вывести список всех запущенных сеансов.

**Горячие клавиши для управления окнами**:

- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">c</span>` — создать новое окно;
- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">w</span>` — просмотреть список окон;
- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">n</span>` — следующее окно;
- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">p</span>` — предыдущее окно;
- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">номер окна (цифрой)</span>` — переключиться на нужное окно;
- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, "` — горизонтальное разделение окна;
- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, <span class="key_bg_c_red">%</span>` — вертикальное разделение окна.
- `Ctrl + b, ,` — переименовать окно.

**Горячие клавиши для просмотра журнала команд и поиска:**

- `Ctrl + b, [` — вход в режим просмотра журнала команд.
- `Ctrl + b, [``Ctrl + s` — прямой поиск. Нажатие клавиши `n` подсвечивает следующий результат поиска.
- `Ctrl + b, [``Ctrl + r` — обратный поиск. Нажатие клавиши `n` подсвечивает следующий результат поиска.

С уверенностью можно сказать, что **tmux** — это простой и мощный консольный инструмент, позволяющая полностью настроить под себя рабочие пространство в терминале. Сила **tmux** в его гибкости и сочетании с другими консольными инструментами, например: VIM, Htop, Tree.

## Дополнения

### Установка

Установка дополнений в tmux может быть несколькими способами:

- **Управляющий дополнениями(Tmux Plugin Manager).**
- **Загрузка из репозитория.**

### Tmux Plugin Manager

Tmux Plugin Manager автоматизирует процесс загрузки и управления дополнениями из вашего файла настроек.

#### Установка TPM

Загрузите TPM репозиторий в каталог `~/.tmux/plugins/tpm`

```bash
$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
```

#### Настройка TPM

Добавьте TPM в ваш файл настроек.

```
~/.tmux.conf

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Add other plugins here (e.g., 'tmux-plugins/tmux-resurrect')

# Initialize TMUX plugin manager (keep this line at the very bottom)
run '~/.tmux/plugins/tpm/tpm'
```

#### Загрузка и установка дополнений

После внесения изменений в ваш файл настроек сделайте следующие действия:

1. **Обновите настройки:** Запустите в терминале `tmux source ~/.tmux.conf`
2. **Установите дополнения:** В работающем сеансе нажмите `Ctrl + b, I`. `I` должна быть заглавной.

TPM загрузит дополнения в ваш каталог с дополнениями и подключит их автоматически.

#### Сочетания быстрых клавиш

**Сочетания быстрых клавиш для работы с TPM:**

- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, I` – установка новых дополнений и обновление настроек окружения.
- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, U` – обновление существующих дополнений.
- `<span class="key_bg_c_red">Ctrl</span> + <span class="key_bg_c_red">b</span>, Alt + u` – удаление дополнений вне списка файла настроек.

### Tmux Resurrect

[**Tmux Resurrect**](https://github.com/tmux-plugins/tmux-resurrect) – дополнение для восстановления окружения tmux после перезапуска.

#### Установка через TPM

Добавьте дополнение в ваш файл настроек.

```
~/.tmux.conf

set -g @plugin 'tmux-plugins/tmux-resurrect'
```

Нажмите `Ctrl + b, I` для загрузки и включения дополнения.

#### Применение

**Сочетания быстрых клавиш для работы с** **TR:**

- `Ctrl + b, Ctrl + s` – сохранить окружение.
- `Ctrl + b, Ctrl + r` – восстановить окружение.