tmux 완전 정복 — 터미널 멀티플렉서의 모든 것 + Claude Code 활용법

tmux가 무엇인지, 왜 써야 하는지, 핵심 사용법과 Claude Code와 함께 쓸 때 얻는 이점까지 정리합니다.

tmux가 뭔가?

tmux(Terminal Multiplexer)는 터미널 하나를 여러 개처럼 쓸 수 있게 해주는 도구다.

비유: 모니터가 한 대인데 여러 작업을 동시에 보고 싶을 때, 화면을 분할하거나 탭처럼 전환하는 것과 같다. 거기다 tmux는 터미널 창을 닫아도 작업이 계속 살아있다는 결정적인 장점이 있다.

터미널 없이:
┌──────────────┐
│  터미널 1개  │  → 창 닫으면 모든 작업 종료
└──────────────┘

tmux 사용:
┌──────────────────────────────────┐
│  tmux 서버 (백그라운드에서 항상 실행)   │
│                                  │
│  session1: 프로젝트 A             │
│  session2: 프로젝트 B             │
│  session3: 서버 모니터링           │
└──────────────────────────────────┘
      ↑ 터미널을 닫아도 세션은 살아있음
      ↑ 다시 접속하면 그대로 이어서 작업 가능

왜 tmux를 써야 하는가?

문제 1: 터미널 창이 너무 많아진다

개발할 때 동시에 필요한 것들:

- 코드 에디터 (vim/nano)
- 개발 서버 실행 (npm run dev)
- git 작업
- 로그 모니터링
- 테스트 실행

tmux 없이는 터미널 탭을 5개 열거나 창을 여러 개 띄워야 한다. tmux는 하나의 터미널 안에서 모두 해결한다.

문제 2: SSH 접속이 끊기면 작업이 날아간다

원격 서버에서 빌드를 돌리다가 인터넷이 끊기면? tmux 없이는 빌드가 중단된다. tmux 세션 안에서 실행하면 SSH가 끊겨도 빌드는 계속 실행된다.

문제 3: 작업 맥락을 매번 다시 세팅해야 한다

퇴근 후 다음날 다시 작업할 때, 어제 어떤 창을 어떻게 열어뒀는지 기억하기 어렵다. tmux 세션은 컴퓨터를 재시작하지 않는 한 그대로 유지된다.


핵심 개념 3가지

tmux는 3단계 계층으로 구성된다.

Server (tmux 백그라운드 프로세스)
└── Session (작업 단위 — 프로젝트별로 구분)
    └── Window (탭 — 하나의 세션 안의 탭들)
        └── Pane (분할 화면 — 하나의 창을 분할)
session: "my-project"
├── window 1: "editor"     ← vim이 실행 중
│   ├── pane 1 (왼쪽)     ← vim
│   └── pane 2 (오른쪽)   ← 터미널
├── window 2: "server"     ← npm run dev 실행 중
└── window 3: "git"        ← git 작업

설치

# macOS
brew install tmux

# Ubuntu / Debian
sudo apt install tmux

# 버전 확인
tmux -V

Prefix 키 — tmux의 모든 단축키의 시작

tmux 단축키는 전부 Prefix 키를 먼저 누른 뒤 명령 키를 누르는 방식이다. 기본 Prefix는 Ctrl + b.

Ctrl+b → 떼고 → 명령 키 입력

많은 사람이 Ctrl+a로 바꿔 쓴다 (GNU Screen과 동일, 손에 편함). 아래에서 커스터마이징 방법을 다룬다.


세션 (Session) 관리

세션 시작/종료

# 새 세션 시작
tmux

# 이름 지정해서 세션 시작 (강력 추천)
tmux new -s my-project

# 세션 목록 확인
tmux ls

# 세션에 다시 붙기 (attach)
tmux attach -t my-project
tmux a -t my-project          # 축약형

# 가장 최근 세션에 붙기
tmux a

# 세션 종료 (안에서)
exit  # 또는 모든 창 닫기

# 세션 강제 종료 (밖에서)
tmux kill-session -t my-project

세션 Detach — 핵심 기능

현재 세션을 종료하지 않고 백그라운드로 보내는 것.

Ctrl+b → d

이걸 누르면 터미널로 돌아오지만, tmux 세션은 백그라운드에서 계속 살아서 실행 중이다. 나중에 tmux a 하면 그대로 복귀.


창 (Window) 관리

세션 안의 탭이라고 생각하면 된다.

단축키 동작
Ctrl+b c 새 창 만들기
Ctrl+b , 현재 창 이름 바꾸기
Ctrl+b n 다음 창으로 이동
Ctrl+b p 이전 창으로 이동
Ctrl+b 숫자 해당 번호 창으로 이동 (Ctrl+b 2)
Ctrl+b w 창 목록 보기 (선택 가능)
Ctrl+b & 현재 창 닫기
하단 상태바:
[my-project] 0:editor* 1:server 2:git
              ↑ 현재창  ↑ 다른창들

분할 화면 (Pane) 관리

하나의 창을 여러 칸으로 나누는 기능.

단축키 동작
Ctrl+b % 좌우로 분할
Ctrl+b " 위아래로 분할
Ctrl+b 방향키 다른 pane으로 이동
Ctrl+b z 현재 pane 전체화면 토글
Ctrl+b x 현재 pane 닫기
Ctrl+b { / } pane 위치 바꾸기
Ctrl+b q pane 번호 표시
Ctrl+b % → 좌우 분할:
┌─────────┬─────────┐
│         │         │
│  vim    │ 터미널  │
│         │         │
└─────────┴─────────┘

Ctrl+b " → 위아래 추가 분할:
┌─────────┬─────────┐
│         │ 터미널  │
│  vim    ├─────────┤
│         │  로그   │
└─────────┴─────────┘

pane 크기 조절

Ctrl+b → Alt+방향키   (1칸씩 조절)
Ctrl+b → Ctrl+방향키  (5칸씩 조절)

스크롤과 복사 모드

tmux 안에서 마우스 스크롤이 기본적으로 안 된다. Copy Mode로 진입해야 스크롤 및 텍스트 복사가 가능하다.

Ctrl+b [   → Copy Mode 진입
방향키 또는 PgUp/PgDn으로 스크롤
q          → Copy Mode 종료

Copy Mode에서 텍스트 복사:

Space → 선택 시작
방향키로 범위 지정
Enter → 복사
Ctrl+b ] → 붙여넣기

필수 설정 — ~/.tmux.conf

tmux의 기본 설정은 불편한 부분이 많다. ~/.tmux.conf 파일로 커스터마이징한다.

# ~/.tmux.conf

# Prefix를 Ctrl+a로 변경 (손에 더 편함)
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix

# 마우스 사용 허용 (스크롤, 클릭으로 pane 선택)
set -g mouse on

# 창/pane 번호를 1부터 시작 (기본은 0)
set -g base-index 1
setw -g pane-base-index 1

# 창을 닫으면 번호 재정렬
set -g renumber-windows on

# 상태바 색상
set -g status-style bg=black,fg=white
set -g window-status-current-style bg=blue,fg=white,bold

# pane 분할을 현재 경로에서 시작
bind % split-window -h -c "#{pane_current_path}"
bind '"' split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

# 설정 리로드 단축키
bind r source-file ~/.tmux.conf \; display "설정 리로드 완료"

# vi 스타일 Copy Mode
setw -g mode-keys vi

설정 적용:

tmux source-file ~/.tmux.conf
# 또는 tmux 안에서: Prefix + r (위 설정 후)

Claude Code와 함께 쓸 때 뭐가 좋은가?

Claude Code는 터미널 기반 도구다. tmux와 조합하면 시너지가 크다.

1. 화면 분할로 코드와 Claude를 동시에

┌─────────────────┬──────────────────┐
│                 │                  │
│   vim / 코드    │   Claude Code    │
│                 │   실행 중        │
│                 │                  │
└─────────────────┴──────────────────┘

Claude가 코드를 수정하는 걸 보면서 옆 pane에서 결과를 바로 확인할 수 있다.

# 분할 후 각 pane에서
# 왼쪽: vim src/index.ts
# 오른쪽: claude

2. Claude 작업 중 다른 창에서 병렬 작업

Claude Code가 긴 작업을 실행하는 동안 (테스트, 빌드, 파일 생성 등) 다른 window로 이동해서 문서 읽기, git 작업 등을 할 수 있다.

window 1: claude  ← 지금 긴 작업 중
window 2: git log, git diff 확인   ← 동시에 가능
window 3: 브라우저 대신 curl 테스트

3. 서버 + Claude 동시 실행

┌─────────────────┬──────────────────┐
│  npm run dev    │                  │
│  실행 중 (로그) │   Claude Code    │
│                 │                  │
└─────────────────┴──────────────────┘

개발 서버를 한 pane에 띄워두고, Claude에게 코드 수정을 맡기면 저장 즉시 서버가 reload되는 것과 에러 로그를 바로 확인할 수 있다.

4. 세션으로 프로젝트 단위 관리

tmux new -s blog        # 블로그 프로젝트
tmux new -s api-server  # API 서버 프로젝트
tmux new -s study       # 공부 환경

# 전환
tmux a -t blog
tmux a -t api-server

프로젝트마다 세션을 분리해두면 Claude Code 컨텍스트도 프로젝트별로 유지된다.

5. Claude 작업 결과를 끊김 없이 유지

Claude Code가 작업하다가 터미널 창을 실수로 닫아도, tmux 세션 안에서 실행했다면 tmux a로 돌아와서 그대로 이어서 볼 수 있다.


자주 쓰는 단축키 한눈에 보기

세션
  tmux new -s 이름     새 세션
  tmux a -t 이름       세션 복귀
  tmux ls              세션 목록
  Prefix + d           세션 detach (백그라운드로)
  Prefix + $           세션 이름 변경
  Prefix + s           세션 목록 (전환 가능)

창 (Window)
  Prefix + c           새 창
  Prefix + ,           창 이름 변경
  Prefix + n / p       다음/이전 창
  Prefix + 숫자         해당 창으로 이동
  Prefix + w           창 목록

분할 (Pane)
  Prefix + %           좌우 분할
  Prefix + "           상하 분할
  Prefix + 방향키       pane 이동
  Prefix + z           전체화면 토글
  Prefix + x           pane 닫기

기타
  Prefix + [           스크롤 모드
  Prefix + ?           단축키 전체 목록

실전 워크플로우

Claude Code로 Next.js 프로젝트 개발하는 환경 세팅:

# 1. 프로젝트 세션 시작
tmux new -s nextjs-blog

# 2. 창 구성
# window 1: claude (기본 창)
claude

# Ctrl+a c → window 2
# window 2: 개발 서버
npm run dev

# Ctrl+a c → window 3
# window 3: git
git status

# 3. window 1로 돌아와서 Claude에 작업 지시
# Ctrl+a 1

# 4. Claude가 작업하는 동안 window 2에서 서버 로그 확인
# Ctrl+a 2

# 5. 작업 완료 후 window 3에서 커밋
# Ctrl+a 3
git add . && git commit -m "feat: 새 기능"

# 6. 퇴근할 때 detach — 모든 상태 유지
# Ctrl+a d

# 다음날 복귀
tmux a -t nextjs-blog

정리

개념 핵심 한 줄
Session 작업 단위. 터미널을 닫아도 살아있음
Window 세션 안의 탭. Prefix+c로 생성
Pane 창 분할. %(좌우) / "(상하)
Detach Prefix+d — 세션 유지하고 터미널 종료
Attach tmux a -t 이름 — 세션 복귀
~/.tmux.conf 마우스, Prefix 키, 색상 등 커스터마이징
Claude Code 조합 분할 화면으로 코드+Claude 동시 보기, 세션으로 프로젝트 분리