UNIXAWESOME

Tmux: современная минималистичная Zen-конфигурация

#tmux
Table of contents

Tmux: must-have для работы в терминале

С тех пор, как я увлекся UNIX-подобными ОС, я живу в терминале. Независимо от того, занимаюсь конфигурированием сервера или написанием скрипта, терминал был моим основным рабочим пространством. Всегда после запуска ноутбука первым делом запускаю терминал. Хотя я и провожу в нем достаточно много времени, я никогда по-настоящему не использовал tmux. Вместо этого всегда хватало запускать несколько окон терминала и работать, переключая фокус между ними. Для простого рабочего процесса этого было достаточно.

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

Но со временем из-за нестабильного интернета, разрывов и потерь SSH-сессий, я решил все-таки попробовать tmux. И это решение полностью изменило мой подход к работе в терминале.

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

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

Для DevOps-инженера или разработчика это просто must-have утилита которая должна быть в его арсенале. 👍

Он легкий, просто настраивается и беспроблемно работает на разных операционных системах.


Установка Tmux

Установка tmux - это простой процесс, и есть два основных способа установить его в систему:


Установка через пакетный менеджер

Ubuntu/Debian

sudo apt install tmux

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

macOS

brew install tmux


Сборка tmux из исходников

Установка зависимостей

Ubuntu/Debian

sudo apt update  
sudo apt install -y git automake bison build-essential \
pkg-config libevent-dev libncurses5-dev

macOS

brew install autoconf automake pkg-config libevent ncurses

Клонируем репозиторий tmux

git clone https://github.com/tmux/tmux.git  
cd tmux

Сборка и установка

sh autogen.sh  
./configure && make  
sudo make install

Проверяем версию

tmux -V


tmux



Создаем tmux.conf

tmux.conf — это файл конфигурации для tmux, который позволяет настраивать поведение, комбинации клавиш, внешний вид и другие параметры.

Создать его нужно по одному из путей:


Основные параметри

Для лучшей поддержки цветов

set -g default-terminal "xterm-256color"
set-option -ga terminal-overrides ",xterm-256color:Tc"
set -ag terminal-overrides ",xterm-256color:RGB"

Переназначаем префикс на Ctrl + A . По умолчанию Ctrl + B

set -g prefix C-a

Поддержка мыши

set -g mouse on

Интеграция с системным буфером обмена

set-option -g set-clipboard on

Включение vim мода

set -g mode-keys vi

Изменяем нумерацию windows и panes что бы она начиналась с 1, по умолчанию с 0, что для многих пользователей неудобно.

set -g base-index 1
setw -g pane-base-index 1

Релоад конфига prefix + r

bind r source-file ~/.config/tmux.conf \; display "Reloaded!"

Подключаем менеджер плагинов (TPM)

https://github.com/tmux-plugins/tpm

Клонируем репозиторий

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

И добавляем в конфигурацию

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

### Init TPM
run '~/.tmux/plugins/tpm/tpm'

Полностью моя минимальная конфигурация выглядит так:

tmux.conf

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'niksingh710/minimal-tmux-status'
set -g @minimal-tmux-bg "#6272A4"



set -g default-terminal "xterm-256color"
set-option -ga terminal-overrides ",xterm-256color:Tc"
set -ag terminal-overrides ",xterm-256color:RGB"
set -g mouse on
set-option -g set-clipboard on
set -g mode-keys vi

# Set prefix
set -g prefix C-a

# Change index
set -g base-index 1
setw -g pane-base-index 1


# Init Tmux Plugin Manager
run '~/.tmux/plugins/tpm/tpm'

Для применения измененных параметров на лету, без перезапуска tmux, можно воспользоваться командой source-file. Для этого нажимаем префикс который задан в конфигурации. В нашем случае это Ctrl + A потом : и попадаем в командный режим.

:source-file ~/.config/tmux/tmux.conf

Добавление плагинов

  1. Добавляем новый плагин в ~/.tmux.conf по типу set -g @plugin '...'
  2. Нажимаем prefix + I для скачивания плагина.

Плагин будет клонирован в директорию ~/.tmux/plugins/ и подключен.

Удаление плагинов

  1. Удаляем или комментируем плагин.
  2. Нажимаем prefix + alt + u для удаления.

Все плагины устанавливаются в директорию ~/.tmux/plugins/. При желании их можно удалить вручную.



tmux



Основные команды

Управление сессиями:

Управление окнами:

Управление пейнами:



Скрипт запуска сессии

Также можно создать скрипт для запуска tmux сразу с несколькими окнами и разделенными как нужно, в которых будет что то запущено.


session.sh

#!/usr/bin/env bash

SESSION="default"

tmux has-session -t $SESSION 2>/dev/null

if [ $? != 0 ]; then
  tmux new-session -d -s $SESSION

  tmux new-window -t $SESSION:1
  tmux new-window -t $SESSION:2 -n "Ansible"

  tmux new-window -t $SESSION:3 -n "k8s"
  tmux split-window -v -t $SESSION:3
  tmux send-keys -t $SESSION:3.1 'ssh user@server' C-m
  tmux send-keys -t $SESSION:3.2 'ssh user@server' C-m
  tmux split-window -h -t $SESSION:3.2
  tmux send-keys -t $SESSION:3.3 'ping 1.1.1.1' C-m

  tmux new-window -t $SESSION:4 -n "dev"
  tmux split-window -v -t $SESSION:4
  tmux send-keys -t $SESSION:4.1 'podman start container' C-m
  tmux send-keys -t $SESSION:4.2 'tail -F /var/log/some.log' C-m

fi

tmux attach -t $SESSION


Много всяких тем, конфигураций, плагинов и кучу всего полезного можно найти в этом репозитории
https://github.com/rothgar/awesome-tmux

Reply to this post by email ↪

Or share: