π ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
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
π― ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΡΡΠ°Π²ΠΊΠ°
- ΠΡ
ΠΎΠ΄ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
Prefix + [ - ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΡΡΠΎΡΠ° ΠΊ Π½Π°ΡΠ°Π»Ρ ΡΠ΅ΠΊΡΡΠ°
- ΠΠ°ΡΠ°Π»ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ:
Space - ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ°
- ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π±ΡΡΠ΅Ρ:
Enter - ΠΡΡΠ°Π²ΠΊΠ°:
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
π‘ ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠΎΠ²Π΅ΡΡ
ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ°
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π΄Π»Ρ ΡΠ΅ΡΡΠΈΠΉ ΠΈ ΠΎΠΊΠΎΠ½
- Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΡΡΠ°ΡΡΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
ΠΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
#!/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 β ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅. ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² ΡΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ. Π‘ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΈΠΉ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ:
- Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ»
- ΠΠ·ΡΡΠΈΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ Π³ΠΎΡΡΡΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ Π½ΡΠΆΠ΄Ρ
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ
- Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°ΡΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄