🌟 Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Tmux (Terminal Multiplexer) β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ нСсколько Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сСссиями ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ послС ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим основныС возмоТности tmux ΠΈ научимся эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² повсСднСвной Ρ€Π°Π±ΠΎΡ‚Π΅.

πŸš€ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности tmux

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ прСимущСства

  • πŸ“Œ Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ сСссий ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ
  • πŸ“Œ Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ
  • πŸ“Œ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΊΠΎΠ½ Π² ΠΎΠ΄Π½ΠΎΠΉ сСссии
  • πŸ“Œ ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ вставка тСкста ΠΌΠ΅ΠΆΠ΄Ρƒ панСлями
  • πŸ“Œ НастраиваСмыС горячиС клавиши
  • πŸ“Œ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° скриптов ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ

πŸ› οΈ Установка ΠΈ настройка

Установка tmux

На macOS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Homebrew:

brew install tmux

На Ubuntu/Debian:

sudo apt install tmux

Базовая конфигурация

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» ~/.tmux.conf с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ настройками:

# ИзмСнСниС прСфикса Π½Π° Ctrl+a
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΌΡ‹ΡˆΠΈ
set -g mouse on

# ΠΠ°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΎΠΊΠΎΠ½ с 1
set -g base-index 1
setw -g pane-base-index 1

# Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚ΠΎΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ
set -g default-terminal "screen-256color"

πŸ“š ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСссиями

  • πŸ”· Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ сСссии: tmux new -s имя_сСссии
  • πŸ”· ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ сСссии: tmux attach -t имя_сСссии
  • πŸ”· Бписок сСссий: tmux ls
  • πŸ”· ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ сСссии: Prefix + d
  • πŸ”· ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ сСссии: Prefix + $

Π Π°Π±ΠΎΡ‚Π° с ΠΎΠΊΠ½Π°ΠΌΠΈ

  • πŸ”· Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°: Prefix + c
  • πŸ”· ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΊΠ½Π°ΠΌΠΈ: Prefix + Π½ΠΎΠΌΠ΅Ρ€_ΠΎΠΊΠ½Π°
  • πŸ”· ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°: Prefix + ,
  • πŸ”· Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΎΠΊΠ½Π°: Prefix + &

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ панСлями

  • πŸ”· Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ: Prefix + "
  • πŸ”· Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ: Prefix + %
  • πŸ”· ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ панСлями: Prefix + стрСлки
  • πŸ”· ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠ°Π½Π΅Π»ΠΈ: Prefix + Alt + стрСлки
  • πŸ”· Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ: Prefix + x

🎯 ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ вставка

  1. Π’Ρ…ΠΎΠ΄ Π² Ρ€Π΅ΠΆΠΈΠΌ копирования: Prefix + [
  2. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ курсора ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ тСкста
  3. Начало выдСлСния: Space
  4. Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ тСкста
  5. ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π±ΡƒΡ„Π΅Ρ€: Enter
  6. Вставка: Prefix + ]

Бинхронизация ΠΏΠ°Π½Π΅Π»Π΅ΠΉ

# Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ синхронного Π²Π²ΠΎΠ΄Π° Π²ΠΎ всС ΠΏΠ°Π½Π΅Π»ΠΈ
:setw synchronize-panes on

# Π’Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ синхронного Π²Π²ΠΎΠ΄Π°
:setw synchronize-panes off

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ восстановлСниС сСссий

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ tmux-resurrect для сохранСния состояния сСссий:

# Установка Ρ‡Π΅Ρ€Π΅Π· tpm (Tmux Plugin Manager)
set -g @plugin 'tmux-plugins/tmux-resurrect'

# Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ сСссии: Prefix + Ctrl-s
# ВосстановлСниС сСссии: Prefix + Ctrl-r

πŸ’‘ ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты

ЭффСктивная Ρ€Π°Π±ΠΎΡ‚Π°

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ осмыслСнныС ΠΈΠΌΠ΅Π½Π° для сСссий ΠΈ ΠΎΠΊΠΎΠ½
  2. Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сСссии для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ скрипты для автоматичСского создания Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ окруТСния
  4. НастройтС ΡΡ‚Π°Ρ‚ΡƒΡΠ½ΡƒΡŽ строку для отобраТСния Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ скрипта для создания Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ окруТСния

#!/bin/bash
# БозданиС новой сСссии
tmux new-session -d -s dev

# Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°
tmux split-window -h
tmux split-window -v

# Запуск ΠΊΠΎΠΌΠ°Π½Π΄ Π² панСлях
tmux send-keys -t 0 'vim' C-m
tmux send-keys -t 1 'git status' C-m
tmux send-keys -t 2 'htop' C-m

# ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ сСссии
tmux attach-session -d -t dev

πŸ“ Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Tmux β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅. НачнитС с Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ постСпСнно добавляйтС Π½ΠΎΠ²Ρ‹Π΅ возмоТности Π² свой Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс. Π‘ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ Π²Ρ‹ смоТСтС ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ окруТСния ΠΈ эффСктивно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ мноТСством Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… сСссий.

РСкомСндуСтся:

  1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»
  2. Π˜Π·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ горячиС клавиши ΠΏΠΎΠ΄ свои Π½ΡƒΠΆΠ΄Ρ‹
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
  4. РСгулярно ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² использовании Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄