ํฌ์ŠคํŠธ

๐Ÿงท tmux ์„ค์ • & ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค๋ช…

TPM(Tmux Plugin Manager)์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” tmux ๋Œ€ํ‘œ ํ”Œ๋Ÿฌ๊ทธ์ธ(sensibleยทresurrectยทcontinuumยทvim-tmux-navigator ๋“ฑ)์˜ ์—ญํ• ๊ณผ ๋ณต๋ถ™์šฉ .tmux.conf ์˜ˆ์‹œ.

๐Ÿงท tmux ์„ค์ • & ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค๋ช…

์ด ๊ธ€์€ tmux ๋กœ๋“œ๋งต์˜ 2๋‹จ๊ณ„(ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ํ™•์žฅ) ๋‹ค. ์ž…๋ฌธยท์„ค์ •๋ถ€ํ„ฐ ์„ธ์…˜ ์ž๋™ํ™”๊นŒ์ง€ ์ „์ฒด ๊ฒฝ๋กœ๋Š” ๋กœ๋“œ๋งต์—์„œ. ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์“ฐ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๋ฒ•์€ tmux ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋‚˜์—์„œ.

๐Ÿ“ฆ TPM (Tmux Plugin Manager)

1
set -g @plugin 'tmux-plugins/tpm'

๐Ÿ‘‰ ์—ญํ• 

Tmux ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ฆฌ์ž. tmux ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•จ.


โฌ‡ ์„ค์น˜

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

.tmux.conf ์ž‘์„ฑ ํ›„ tmux ์•ˆ์—์„œ prefix + I(Ctrl+b โ†’ I)๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•œ๋‹ค.


๐Ÿ“š ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชฉ๋ก

1. tmux-plugins/tmux-sensible

1
set -g @plugin 'tmux-plugins/tmux-sensible'

โœ” ์—ญํ• 

tmux์˜ ๊ธฐ๋ณธ๊ฐ’์„ ๋” ํ•ฉ๋ฆฌ์ ์ธ ์„ค์ •(sane defaults) ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ. ๊ธฐ๋ณธ ํ‚ค ์„ค์ •, ํŒจ๋„ ๋™์ž‘, ๊ธฐํƒ€ ๋น„์ง๊ด€์  ์„ค์ •๋“ค์„ ๊ฐœ์„ ํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ˆ˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋จ.


2. tmux-plugins/tmux-resurrect

1
2
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @resurrect-capture-pane-contents 'on'

โœ” ์—ญํ• 

tmux ์„ธ์…˜์„ โ€œ๋ถ€ํ™œ(resurrect)โ€ ์‹œ์ผœ์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ. ์ €์žฅ๋œ ์‹œ์ ์˜ ์„ธ์…˜, ์œˆ๋„์šฐ, ํŒจ๋„ ๋ ˆ์ด์•„์›ƒ, ์‹คํ–‰ ์ค‘ ๋ช…๋ น ๋“ฑ์„ ๋ณต์›ํ•ด์คŒ.

โœ” ๊ธฐ๋Šฅ

  • prefix + Ctrl-s โ†’ ์„ธ์…˜ ์ƒํƒœ ์ €์žฅ
  • prefix + Ctrl-r โ†’ ์„ธ์…˜ ๋ณต์›
  • ํŒจ๋„ ๋‚ด์šฉ๊นŒ์ง€ ์ €์žฅํ•˜๋ ค๋ฉด @resurrect-capture-pane-contents='on' ํ•„์š”

3. tmux-plugins/tmux-continuum

1
2
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'

โœ” ์—ญํ• 

tmux-resurrect๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ๋ฐฑ์—… + ์ž๋™ ๋ณต์› ๊ธฐ๋Šฅ์„ ์ œ๊ณต.

โœ” ๊ธฐ๋Šฅ

  • ์ž๋™ ์ €์žฅ (๊ธฐ๋ณธ 15๋ถ„ ๊ฐ„๊ฒฉ)
  • ์‹œ์Šคํ…œ ์žฌ๋ถ€ํŒ… ํ›„ tmux ์ž๋™ ๋ณต์›
  • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ทธ๋Œ€๋กœ ๋ณต๊ตฌ ๊ฐ€๋Šฅ

๐Ÿ‘‰ tmux-resurrect์˜ ์ƒ์œ„ ํ™•์žฅ ํ”Œ๋Ÿฌ๊ทธ์ธ

์„ธ์…˜ ๋งค๋‹ˆ์ €(tmuxinatorยทsmug)๋Š” ์—ฌ๊ธฐ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๋‹ค๋ฅธ ์ถ•์ด๋‹ค. resurrect๋Š” ๋–  ์žˆ๋˜ ์„ธ์…˜์„ ์ €์žฅโ†’๋ณต์›ํ•˜๊ณ , ์„ธ์…˜ ๋งค๋‹ˆ์ €๋Š” tmux ๋ฐ–์˜ ์™ธ๋ถ€ CLI๋กœ ๋ ˆ์ด์•„์›ƒ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ ์–ธโ†’์ƒ์„ฑํ•œ๋‹ค. TPM ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์•„๋‹ˆ๋ผ ๋ณ„๋„ ๋„๊ตฌ์ด๋ฉฐ, 3๋‹จ๊ณ„ ์„ธ์…˜ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์—์„œ ๋‹ค๋ฃฌ๋‹ค.


4. jimeh/tmux-themepack

1
2
set -g @plugin 'jimeh/tmux-themepack'
set -g @themepack 'powerline/default/cyan'

โœ” ์—ญํ• 

๋‹ค์–‘ํ•œ ์ƒํƒœ๋ฐ”(theme) ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ…Œ๋งˆ ํ”Œ๋Ÿฌ๊ทธ์ธ.

โœ” ํšจ๊ณผ

  • Powerline ์Šคํƒ€์ผ ์ ์šฉ ๊ฐ€๋Šฅ
  • ์ƒ‰์ƒ ์กฐํ•ฉ์„ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝ
  • ํ…Œ๋งˆ ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ •ํ•  ํ•„์š” ์—†์Œ

5. christoomey/vim-tmux-navigator

1
set -g @plugin 'christoomey/vim-tmux-navigator'

โœ” ์—ญํ• 

Vim/Neovim ํŒจ๋„๊ณผ Tmux ํŒจ๋„ ์‚ฌ์ด๋ฅผ Ctrl+h/j/k/l ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ.

โœ” ํšจ๊ณผ

  • Vim ์ฐฝ โ†” tmux pane ์ด๋™์ด ์ง๊ด€์ 
  • Vim ์‚ฌ์šฉ์ž์˜ ํ•„์ˆ˜ ํ”Œ๋Ÿฌ๊ทธ์ธ

๐Ÿ“Ž ๋” ์ฐพ๊ธฐ ยท awesome-tmux (10.1kโญ, ์œ ์ง€ ์ค‘) โ€” ์œ„ ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค ๋„ˆ๋จธ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธยท์„ค์ •ยท์•„ํ‹ฐํด์„ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๋ชจ์•„๋‘” ์ปค๋ฎค๋‹ˆํ‹ฐ ์ธ๋ฑ์Šค. ํ”Œ๋Ÿฌ๊ทธ์ธ ๋Œ€๋ถ€๋ถ„์€ tmux-plugins org์— semi-๊ณต์‹์œผ๋กœ ๋ชจ์—ฌ ์žˆ๋‹ค(TPM 14.9kโญยทresurrect 12.9kโญ).


โš™ ๊ธฐํƒ€ tmux ์„ค์ •

๊ธฐ๋ณธ ํ„ฐ๋ฏธ๋„ ๋ฐ ๋งˆ์šฐ์Šค ํ™œ์„ฑํ™”

1
2
set -g default-terminal "tmux-256color"
set -g mouse on

์„ค๋ช…

  • tmux-256color: tmux ๋‚ด๋ถ€ terminfo๋กœ, 256์ƒ‰ยท์ดํƒค๋ฆญยทTrue Color๋ฅผ ์ œ๋Œ€๋กœ ์•Œ๋ฆฐ๋‹ค. ๊ณผ๊ฑฐ ํ”ํžˆ ์“ฐ๋˜ screen-256color๋Š” ๋” ๋ณด์ˆ˜์ ์ธ fallback์ผ ๋ฟ์ด๋ผ, terminfo๋งŒ ์žˆ์œผ๋ฉด tmux-256color๊ฐ€ ๊ถŒ์žฅ๊ฐ’์ด๋‹ค. (tmux ์œ ์šฉํ•œ ์„ค์ • ์ •๋ฆฌ์˜ True Color ์„ค์ •๊ณผ ํ•œ ์Œ)
  • ๋งŒ์•ฝ tmux-256color ์ ์šฉ ํ›„ ์ƒ‰์ด ๊นจ์ง€๋ฉด ํ•ด๋‹น terminfo๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์ด๋‹ค. screen-256color๋กœ ๋˜๋Œ๋ฆฌ๊ฑฐ๋‚˜ terminfo๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
  • mouse on: ๋งˆ์šฐ์Šค๋กœ ํŒจ๋„ ํฌ๊ธฐ ์กฐ์ ˆ, ์„ ํƒ, ์Šคํฌ๋กค ๊ฐ€๋Šฅ

๐Ÿ TPM ์ดˆ๊ธฐํ™”

1
run '~/.tmux/plugins/tpm/tpm'

tmux conf ๋งจ ๋งˆ์ง€๋ง‰ ์ค„์— ์œ„์น˜ํ•ด์•ผ ํ•จ.


๐Ÿงฉ ์ตœ์ข… .tmux.conf (ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค๋ช… ํฌํ•จ)

# --- TPM ---
set -g @plugin 'tmux-plugins/tpm'

# --- Plugin list ---
set -g @plugin 'tmux-plugins/tmux-sensible'       # sane tmux defaults
set -g @plugin 'tmux-plugins/tmux-resurrect'      # save & restore tmux sessions
set -g @plugin 'tmux-plugins/tmux-continuum'      # auto-save & auto-restore
set -g @plugin 'jimeh/tmux-themepack'             # tmux status bar themes
set -g @plugin 'christoomey/vim-tmux-navigator'   # navigate between vim <-> tmux with Ctrl-hjkl

# --- Theme config ---
set -g @themepack 'powerline/default/cyan'

# --- Resurrect settings ---
set -g @resurrect-capture-pane-contents 'on'
set -g @continuum-restore 'on'

# --- Tmux settings ---
set -g default-terminal "tmux-256color"   # ์ƒ‰ ๊นจ์ง€๋ฉด screen-256color๋กœ fallback
set -g mouse on

# --- Initialize TPM (must be last) ---
run '~/.tmux/plugins/tpm/tpm'
์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.