Базовая настройка и работа с tmux

Table of contents

Introduction

tmux — свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. tmux может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к tmux, находящемуся в фоне.

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

sudo apt-get install tmux

Конфигурация tmux

Для настройки tmux создаем файл конфигурации в домашней директории:

nano ~/.tmux.conf

Добавим в созданный файл опцию для поддержки мышки:

# Make mouse useful
set -g mouse on

Начиная с версии 2.1, данная опция включит режим мышки, который позволит использовать скролл, менять размеры панелей перетаскиванием и выбирать панели с помощью мышки.

Основные параметры и комбинации клавиш

Управлять tmux можно как командами, так и комбинациями клавиш в уже открытом окне tmux. Для того, чтобы использовать комбинации клавиш, необходимо сначала выполнить префикс:

CTRL + b

И затем нажать нужную клавишу.

Список поддерживаемых команд

tmux list-commands

Дополнительная информация

man tmux

Запуск tmux с параметрами по умолчанию

tmux

Запуск с заданными параметрами

tmux new-session -d -s <SESSION> -n <WINDOW_NAME>

где <SESSION> - название новой сессии, а <WINDOW_NAME> - название окна.

Вывод списка сессий

tmux ls

Параметр -d создает detach-сессию, к которой можно присоединиться следующим образом:

CTRL + b > s
tmux attach-session -t <SESSION>

Отключение от сессии

CTRL + b > d
tmux detach

Завершение сессии

tmux kill-session -t <SESSION>

Далее рассмотрим, как в рамках сессии можно создавать несколько окон, а в рамках окон - несколько панелей.

Создание нового окна

CTRL + b > c
tmux new-window -t <SESSION>:<INDEX> -n <WINDOW_NAME>

где <INDEX> - индекс нового окна

Работа с окнами

Список окон: CTRL + b > w

Следующее окно: CTRL + b > n

Предыдущее окно: CTRL + b > p

Переключение на окно с определенным индексом: CTRL + b > <INDEX>

Переименование окна: CTRL + b > ,

Закрытие окна: CTRL + b > x или exit

Создание панели

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

Деление горизонтально:

CTRL + b > "
tmux split-window -h

или с использованием alias:

tmux splitw -h

Деление вертикально:

CTRL + b > %
tmux split-window -v

или с использованием alias:

tmux splitw -v

Также эти команды поддерживают параметр -p, который позволяет указать разбиение в процентах.

Переключаться между панелями можно мышью или же следующим образом:

CTRL + b > Arrow key
CTRL + b > ALT + Arrow key
tmux selectp -t <INDEX>

Зум панелей

Т.к. панель занимает часть окна, то не всегда удобно ее использовать для чтения большого количества информации. Также при многострочном селекте текст выделяется и на соседней панели. В этих двух случаях нам поможет зум панели до размера окна и обратно с помощью клавиш:

CTRL + b > z

Автоматизация работы

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

#!/bin/bash
SESSION="work"
WINDOW_NAME="main"

# Start tmux
tmux start-server

# Create a new tmux session
tmux new-session -d -s $SESSION -n $WINDOW_NAME

# Create 4 panels
tmux selectp -t 0
tmux splitw -h -p 50

tmux selectp -t 0
tmux splitw -v -p 50

tmux selectp -t 2
tmux splitw -v -p 50

# Exec command in panel #1
tmux selectp -t 1
tmux send-keys "who" C-m

# Exec command in panel #3
tmux selectp -t 3
tmux send-keys "htop" C-m

# Attach to created session
tmux attach-session -t $SESSION

Мы рассмотрели базовые команды для работы с tmux, а также пример автоматизации для подготовки окон к работе.

Дата публикации :
Дата редактирования : 2020-05-21 00:18:21
Автор :

Cookies and IP addresses allow us to deliver and improve our web content, resolve technical errors, and provide you with a personalized experience. Our website uses cookies and collects your IP address for these purposes.