tmux๋ ์ฌ๋ฌ ๊ฐ์ ํฐ๋ฏธ๋ ์ธ์
์ ์์ฑํ๊ณ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ํฐ๋ฏธ๋ ๋ฉํฐํ๋ ์์ด๋ค. ํ ์ธ์
์์ ์ฌ๋ฌ ๊ฐ์ ์๋์ฐ(window) โ ํจ๋(pane) ์ ๋ ์ ์๋ค.
๊ตฌ์กฐ: ์ธ์
(Session) > ์๋์ฐ(Window) > ํจ๋(Pane)
์ด ๊ธ์ tmux ๋ก๋๋งต์ ์
๋ฌธ ๋จ๊ณ๋ค. ์ค์ ยทํ๋ฌ๊ทธ์ธยท์๋ํ๋ก ์ด์ด์ง๋ ์ ์ฒด ํ์ต ๊ฒฝ๋ก๋ ๋ก๋๋งต์์.
1. ์ค์น
1
2
3
| brew install tmux # macOS
sudo apt-get install tmux # Ubuntu
sudo yum install tmux # CentOS
|
2. ์ค์ ํ์ผ
tmux ์ค์ ์ ~/.tmux.conf ์ ์์ฑํ๋ค. tmux ์คํ ์ ์๋ ๋ก๋๋๋ฉฐ, ์ฌ๋ก๋๋ ์๋ ๋ช
๋ น์ด๋ก ๊ฐ๋ฅ:
1
| tmux source-file ~/.tmux.conf
|
3. ์ธ์
(Session)
โ ์ธ์
์์ฑ
1
2
3
4
| tmux
tmux new
tmux new-session
tmux new -s sessionname
|
โ ์ธ์
์ ์
1
2
3
4
| tmux attach
tmux attach-session
tmux a
tmux a -t sessionname
|
โ ์ธ์
์ข
๋ฃ
1
2
| tmux kill-session
tmux kill-session -t sessionname
|
โ ์์ฃผ ์ฐ๋ ๋จ์ถํค
| ๋จ์ถํค | ์ค๋ช
|
|---|
Ctrl+b + $ | ์ธ์
์ด๋ฆ ๋ณ๊ฒฝ |
Ctrl+b + d | ์ธ์
detach |
Ctrl+b + ) | ๋ค์ ์ธ์
|
Ctrl+b + ( | ์ด์ ์ธ์
|
Ctrl+b + w | ์ธ์
/์ฐฝ ๋ฆฌ์คํธ ๋ณด๊ธฐ |
4. ์๋์ฐ(Window)
๋ธ๋ผ์ฐ์ ํญ์ฒ๋ผ ํ๋์ ์ธ์
์์์ ์ฌ๋ฌ ์ฐฝ์ ์ฌ์ฉํ ์ ์๋ค.
โ ๋จ์ถํค
| ๋จ์ถํค | ์ค๋ช
|
|---|
Ctrl+b + c | ์ ์๋์ฐ ์์ฑ |
Ctrl+b + n | ๋ค์ ์๋์ฐ |
Ctrl+b + p | ์ด์ ์๋์ฐ |
Ctrl+b + l | ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉํ ์๋์ฐ |
Ctrl+b + ์ซ์ | ๋ฒํธ๋ก ์ด๋ |
Ctrl+b + ' | ์ด๋ฆ์ผ๋ก ๊ฒ์ํ์ฌ ์ด๋ |
Ctrl+b + , | ์๋์ฐ ์ด๋ฆ ๋ณ๊ฒฝ |
Ctrl+b + . | ์๋์ฐ ๋ฒํธ ๋ณ๊ฒฝ |
Ctrl+b + & | ์๋์ฐ ์ข
๋ฃ |
Ctrl+b + f | ์๋์ฐ ๊ฒ์ |
Ctrl+b + z | ํจ๋ ํ๋/์ถ์(toggle zoom) |
โ ์๋์ฐ ํฉ์น๊ธฐ/๋ถ๋ฆฌ ๋ฑ
(Ctrl+b + : ๋ก ๋ช
๋ น์ฐฝ ์ด๊ธฐ)
1
2
3
4
5
6
7
8
| join-pane -s 2 -t 1 # 2๋ฒ์ ์ง์ด์ โ 1๋ฒ ์์ ํฉ์น๊ธฐ (2๊ฐ ์ด๋)
join-pane -h -s 2 -t 1 # ์ค๋ฅธ์ชฝ์ ๋ถ์ด๊ธฐ(-h) / -v๋ฉด ์๋์ ๋ถ์ด๊ธฐ
join-pane -b -s 2 -t 1 # -b(before): ๋ฐ๋์ชฝ(์ผ์ชฝ/์)์ ๋ถ์ด๊ธฐ
break-pane -s 1 -t 2 # 1๋ฒ ์๋์ฐ๋ฅผ 2๋ฒ ์๋์ฐ๋ก ๋ถ๋ฆฌ
swap-pane -s 1 -t 2 # ๋ ํจ๋ ์๋ฆฌ ๊ตํ
swap-window -s 1 -t 2 # ๋ ์๋์ฐ ์๋ฆฌ ๊ตํ
move-window -s 1 -t 5 # ์๋์ฐ 1์ ๋น ๋ฒํธ 5๋ก ์ฎ๊ธฐ๊ธฐ(๊ตํ ์๋)
move-window -r # ์๋์ฐ ๋ฒํธ ๋น์นธ ์์ด ์ฌ์ ๋ ฌ(0,3,7 โ 0,1,2)
|
-s/-t๊ฐ ๋งค๋ฒ ํท๊ฐ๋ฆฐ๋ค๋ฉด โ ์ด๊ฒ join/swap์ ํต์ฌ์ด์ tmux ๋ช
๋ น ์ ๋ฐ์ ๊ณตํต ๋ฌธ๋ฒ์ด๋ค.
-s(source)๋ ์์ง์ด๋ ๊ฒ, -t(target)๋ ๋์ฐฉ์ง. source๊ฐ target ์ชฝ์ผ๋ก ๊ฐ๋ค. (swap์ ์๋ฆฌ ๊ตํ์ด๋ผ ๋ฐฉํฅ์ด ๋์นญ)- ๊ฐ์ ๊ทธ๋ฅ ์ซ์๊ฐ ์๋๋ผ ์ฃผ์๋ค. ํ์์ ์ผ์ชฝ๋ถํฐ ํฐ ๋จ์ โ
์ธ์
:์๋์ฐ.ํจ๋ (work:2.1). ์๋ตํ ์๋ฆฌ๋ โํ์ฌโ๋ก ์ฑ์์ง๋ค: -t 1=ํ์ฌ ์ธ์
์ ์๋์ฐ 1, -t .1=ํ์ฌ ์๋์ฐ์ ํจ๋ 1. ์ (.)์ด ์์ผ๋ฉด ํจ๋, ์์ผ๋ฉด ์๋์ฐ. - ๊ฐ ์๋ฆฌ์ ์ด๋ฆยท๋ฒํธ ๋ ๋ค ๋์ง๋ง, ์ค๋ฌด ์กฐํฉ์ ์ ํด์ ธ ์๋ค โ ๊ฐ์ ๊ท์น์ด ์๋๋ผ โ๋ฒํธ๊ฐ ์๊ณ ํ๋ฉด์ ๋ณด์ด๋๋โ์ ์ฐจ์ด๋ค:
- ์ธ์
: ์ ์ด์ ๋ฒํธ๊ฐ ์์ผ๋ ์ด๋ฆ (
tmux new -s work๋ก ๋ถ์ธ ๊ทธ ์ด๋ฆ). - ์๋์ฐ: ์ํ ๋ฐ์
2:logs๋ก ๋ฒํธยท์ด๋ฆ ๋ค ๋ณด์ด๋ ์๋ฌด๊ฑฐ๋. -t 2๋ -t logs๋ ๋์ (์งง์ ๋ฒํธ๊ฐ ํธํจ). - ํจ๋: ์ด๋ฆ์ด ์๊ณ ๋ฒํธ๋ ์ ๋ณด์ด๋,
Ctrl+b + q๋ก ํ์ธ ํ ๋ฒํธ. โ ๊ทธ๋์ work:2.1(์ด๋ฆ:๋ฒํธ.๋ฒํธ)์ด ๊ฐ์ฅ ํํ ๊ผด.
-s๋ฅผ ์๋ตํ๋ฉด ํ์ฌ(๋๋ ๋งํฌ๋) ํจ๋์ด source๋ค. ์๋์น ์๊ฒ ๋ธ๋ ค๊ฐ๋ ์คํฌ๋ฆฝํธยท๋ฐ์ธ๋ฉ์์ -s๋ฅผ ๋ช
์.join-pane์์ ํ์ฌ ์๋์ฐ๋ฅผ source๋ก ์ง์ ํ๋ฉด ์๋ฌ. source๋ ๋ค๋ฅธ ์๋์ฐ์ฌ์ผ ํ๋ค.- ์ธ์
๊ฒฝ๊ณ๋ ๋๋๋ค. ์ฃผ์ ์์
์ธ์
:์ ๋ถ์ด๋ฉด join-paneยทswap-window๊ฐ ๋ค๋ฅธ ์ธ์
์ผ๋ก๋ ๋์ํ๋ค: join-pane -s work:2 -t home:1. - ๋ฒํธ๊ฐ ํท๊ฐ๋ฆฌ๋ฉด
Ctrl+b + q๋ก ํจ๋ ๋ฒํธ๋ฅผ ํ๋ฉด์ ๋์ ํ์ธ.
5. ํจ๋(Pane)
์๋์ฐ ๋ด๋ถ๋ฅผ ์ฌ๋ฌ ์์ญ์ผ๋ก ๋๋์ด ์ฌ์ฉํ ์ ์๋ค.
โ ํจ๋ ๋ถ๋ฆฌ(split)
| ๋จ์ถํค | ์ค๋ช
|
|---|
Ctrl+b + % | ์ธ๋ก ๋ถํ (vertical) |
Ctrl+b + " | ๊ฐ๋ก ๋ถํ (horizontal) |
โ ํจ๋ ์ด๋
| ๋จ์ถํค | ์ค๋ช
|
|---|
Ctrl+b + โ / โ / โ / โ | ๋ฐฉํฅํค๋ก ์ด๋ |
Ctrl+b + o | ๋ค์ ํจ๋ |
Ctrl+b + ; | ์ด์ ํจ๋ |
Ctrl+b + { / } | ํจ๋ ์์น ์ด๋ |
Ctrl+b + ! | ํจ๋์ ์ ์๋์ฐ๋ก ๋ถ๋ฆฌ |
Ctrl+b + x | ํจ๋ ์ข
๋ฃ |
Ctrl+b + Ctrl+o | ํจ๋ ์ํ(swap) |
โ ํจ๋ ํฌ๊ธฐ ์กฐ์
(Ctrl+b + : ๋ช
๋ น์ฐฝ์์ ์คํ)
1
2
3
4
5
6
7
8
9
10
11
| resize-pane -D
resize-pane -U
resize-pane -L
resize-pane -R
resize-pane -D 10 # 10์นธ ๋ณ๊ฒฝ
resize-pane -U 10
resize-pane -L 10
resize-pane -R 10
ctrl + b ๋ฅผ ๋๋ฅด๊ณ option + ๋ฐฉํฅํค๋ก ์ฌ์ด์ฆ ์กฐ์ (macOS)
|
6. ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ(Copy Mode)
โ ์ง์
/์ข
๋ฃ
Ctrl+b + [ : ๋ณต์ฌ๋ชจ๋ ์ง์
Ctrl+b + ] : ๋ถ์ฌ๋ฃ๊ธฐ
โ ๋ณต์ฌ๋ชจ๋ ๋จ์ถํค
์๋ ํ๋ vi ํค ๊ธฐ์ค์ด๋ค. tmux ๊ธฐ๋ณธ์ emacs ํค๋งต์ด๋ฏ๋ก, h/j/k/lยทg/G ๊ฐ์ vi ์ด๋์ ์ฐ๋ ค๋ฉด ~/.tmux.conf์ ํ ์ค์ด ํ์ํ๋ค.
setw -g mode-keys vi
| ํค | ์ค๋ช
|
|---|
| Space | ์ ํ ์์ |
| Enter | ์ ํ ๋ณต์ฌ |
| Esc | ์ ํ ์ทจ์ |
| g / G | ์/์๋ ๋ ์ด๋ |
| h/j/k/l | ๋ฐฉํฅ ์ด๋ |
| / | ๊ฒ์ |
| # | paste buffer ๋ชฉ๋ก |
| q | ์ข
๋ฃ |
7. ์คํฌ๋กค
- ํค๋ณด๋๋ก:
Ctrl+b + [ โ โ/โ - ๋ง์ฐ์ค๋ก ์คํฌ๋กคํ๋ ค๋ฉด
.tmux.conf์ ์ถ๊ฐ:
8. Tmux Plugin Manager (TPM)
ํ๋ฌ๊ทธ์ธ ์ค์นยท๊ตฌ์ฑ๊ณผ ๋ํ ํ๋ฌ๊ทธ์ธ๋ณ ์ค๋ช
, ๋ณต๋ถ์ฉ .tmux.conf ๋ธ๋ก์ ๋ณ๋ ๊ธ์ ์ ๋ฆฌํด๋์๋ค: Tmux ์ค์ & ํ๋ฌ๊ทธ์ธ ์ค๋ช
9. Resurrect/Continuum ํ
์ธ์
์ killํ๋๋ฐ๋ ๋ค์ ์ด์๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด tmux-resurrect + tmux-continuum์ ์๋ ๋ณต์ ๊ธฐ๋ฅ ๋๋ฌธ์ด๋ค. @continuum-restore 'on' ์ํ์์๋ tmux ์์ ์์ ์ ๋ง์ง๋ง ์ ์ฅ ์ํ๋ฅผ ์๋์ผ๋ก ๋ณต์ํ๋ค.
โ ๋ณต์ ๋ฐ์ดํฐ ์ ์ฅ ์์น
1
| ~/.local/share/tmux/resurrect/
|
โ ๋ณต์ ๋ฐ์ดํฐ ์ญ์ (์ด๊ธฐํ)
1
2
| tmux kill-server
rm -rf ~/.local/share/tmux/resurrect/*
|
โ ์๋ ๋ณต์ ๋๊ธฐ
1
| set -g @continuum-restore 'off'
|