tmux 완전 초보자 가이드 - WSL2에서 터미널 마스터하기
tmux는 터미널 하나에서 여러 화면을 동시에 쓸 수 있게 해주는 도구입니다. 터미널을 닫아도 작업이 살아있어서, SSH 끊김이나 실수에도 안전합니다. 핵심 5개만 외우면 됩니다.
이 문서의 모든 키바인딩은 커스텀
~/.tmux.conf설정 기준입니다. tmux 기본 설정과 다를 수 있으니, 설정 파일을 먼저 확인하세요.
1. tmux가 뭔가요?
tmux(Terminal MUltipleXer)는 터미널 멀티플렉서입니다. 쉽게 말하면, 터미널을 쪼개고 관리하는 도구입니다.
tmux 없이:
터미널 1개 = 화면 1개 = 작업 1개
tmux 쓰면:
터미널 1개 안에서:
├── 화면1: 코드 편집
├── 화면2: 서버 실행
├── 화면3: 로그 확인
└── 화면4: git 작업
가장 중요한 기능: 터미널을 닫아도 작업이 살아있습니다! SSH 연결이 끊겨도, 터미널을 실수로 닫아도, 다시 접속하면 그대로입니다. 이것만으로도 tmux를 쓸 이유가 충분합니다.
2. 핵심 개념 3가지
tmux에는 세션 -> 윈도우 -> 패널 3단계 구조가 있습니다.
+─ tmux ──────────────────────────────────────────+
| |
| 세션(Session) = 하나의 작업 공간 |
| ├── 윈도우(Window) = 탭 (화면 전체를 차지) |
| | ├── 패널(Pane) = 분할된 각각의 영역 |
| | └── 패널(Pane) |
| └── 윈도우(Window) |
| └── 패널(Pane) |
| |
+──────────────────────────────────────────────────+
| 개념 | 비유 | 설명 |
|---|---|---|
| 세션(Session) | 프로젝트 | “프론트엔드 작업”, “백엔드 작업” 같은 큰 단위 |
| 윈도우(Window) | 브라우저 탭 | 세션 안에서 탭처럼 전환 |
| 패널(Pane) | 화면 분할 | 하나의 윈도우를 쪼개서 동시에 보기 |
비유로 이해하기: 세션 = 사무실, 윈도우 = 책상, 패널 = 책상 위의 모니터 하나의 사무실(세션)에 여러 책상(윈도우)이 있고, 하나의 책상에 여러 모니터(패널)가 있는 구조입니다.
3. Prefix 키 이해하기 - 가장 중요!
tmux의 모든 명령은 2단계로 입력합니다:
1단계: Ctrl+a 를 누른다 (동시에 누르고, 손을 뗀다)
2단계: 명령 키를 누른다
반드시 손을 떼고 다음 키를 눌러야 합니다!
Ctrl+a, |의미: Ctrl+a 누르고 -> 손 떼기 -> | 누르기 세 키를 동시에 누르면 동작하지 않습니다.
예시: 화면을 좌우로 분할하고 싶다
잘못된 방법: Ctrl+a+| (세 키를 동시에 누름) <- 안 됩니다!
올바른 방법: Ctrl+a 누르고 손 떼기 -> | 누르기 <- 이렇게!
|는 Shift + \ 입니다. 백슬래시(\) 키를 Shift와 함께 누르면 됩니다.
(키보드에서 Enter 키 바로 위 또는 Backspace 근처에 있습니다)
4. 시작하기
tmux 시작
# 그냥 시작
tmux
# 이름을 붙여서 시작 (권장)
tmux new -s work
tmux에 들어가면 화면 아래에 초록색 상태바가 보입니다. 이게 보이면 tmux 안에 있는 겁니다.
tmux 나가기 (2가지)
| 방법 | 명령 | 차이점 |
|---|---|---|
| 분리(detach) | Ctrl+a, d |
tmux는 백그라운드에서 계속 살아있음 |
| 종료(exit) | exit 입력 |
패널/윈도우가 완전히 닫힘 |
항상
Ctrl+a, d로 나가세요.exit는 작업이 다 끝났을 때만 쓰세요. detach로 나가면 나중에 그대로 복원할 수 있습니다.
다시 들어가기
# 마지막 세션으로 돌아가기
tmux attach
# 특정 세션으로 돌아가기
tmux attach -t work
# 세션 목록 보기
tmux ls
5. 패널(Pane) - 화면 분할
가장 많이 쓰는 기능입니다.
분할하기
| 키 | 동작 | 모양 |
|---|---|---|
Ctrl+a, | |
좌우 분할 (세로선) | [왼쪽 | 오른쪽] |
Ctrl+a, - |
상하 분할 (가로선) | [위] — [아래] |
실습해보세요:
- tmux 실행:
tmux new -s practice Ctrl+a누르고 손 떼고,|누르기 -> 좌우로 분할됨!Ctrl+a누르고 손 떼고,-누르기 -> 현재 패널이 상하로 분할됨!
결과:
+────────────┬─────────────+
| | 패널2 |
| 패널1 +─────────────|
| | 패널3 |
+────────────┴─────────────+
패널 이동 (포커스 변경)
분할 후 다른 패널로 이동하는 방법:
| 키 | 방향 | 기억법 |
|---|---|---|
Ctrl+a, h |
왼쪽 | vim의 h |
Ctrl+a, j |
아래 | vim의 j |
Ctrl+a, k |
위 | vim의 k |
Ctrl+a, l |
오른쪽 | vim의 l |
더 편한 방법 (Prefix 없이):
Alt+h왼쪽 /Alt+j아래 /Alt+k위 /Alt+l오른쪽 Prefix 없이 바로 누르면 됩니다. 패널 이동할 때 가장 빠릅니다. 마우스도 됩니다! 원하는 패널을 마우스로 클릭하면 포커스가 이동합니다.
패널 크기 조절
| 키 | 동작 |
|---|---|
Ctrl+a, H (대문자) |
왼쪽으로 5칸 넓히기 |
Ctrl+a, J (대문자) |
아래로 5칸 넓히기 |
Ctrl+a, K (대문자) |
위로 5칸 넓히기 |
Ctrl+a, L (대문자) |
오른쪽으로 5칸 넓히기 |
대문자는 Shift를 함께 누르면 됩니다.
마우스로 패널 경계선을 드래그해도 크기 조절이 됩니다.
패널 전체화면 (줌)
| 키 | 동작 |
|---|---|
Ctrl+a, z |
현재 패널을 전체화면으로 / 다시 원래대로 |
작은 패널에서 긴 로그를 봐야 할 때 유용합니다. 다시 Ctrl+a, z 누르면 원래 분할로 돌아옵니다.
패널 닫기
| 키 | 동작 |
|---|---|
Ctrl+a, x |
현재 패널 닫기 (확인 질문 나옴, y로 확인) |
exit 입력 |
현재 패널 즉시 닫기 |
6. 윈도우(Window) - 탭처럼 사용
패널은 한 화면을 쪼개는 거고, 윈도우는 완전히 새로운 화면입니다. 브라우저의 탭이라고 생각하세요.
윈도우 관리
| 키 | 동작 |
|---|---|
Ctrl+a, c |
새 윈도우 만들기 |
Ctrl+a, 1 |
1번 윈도우로 이동 |
Ctrl+a, 2 |
2번 윈도우로 이동 |
Ctrl+a, 3 |
3번 윈도우로 이동 |
Ctrl+a, Ctrl+h |
이전 윈도우 |
Ctrl+a, Ctrl+l |
다음 윈도우 |
Ctrl+a, , (쉼표) |
현재 윈도우 이름 바꾸기 |
Ctrl+a, & |
현재 윈도우 닫기 |
상태바에서 현재 윈도우를 확인할 수 있습니다:
work 1 zsh 2 zsh* 3 zsh
^ 여기가 현재 윈도우 (* 표시)
7. 세션(Session) 관리
세션은 프로젝트 단위로 만들면 편합니다.
# 터미널에서 (tmux 바깥)
tmux new -s frontend # 프론트엔드 세션
tmux new -s backend # 백엔드 세션
# 세션 목록
tmux ls
# 특정 세션 접속
tmux attach -t frontend
| tmux 안에서 키 | 동작 |
|---|---|
Ctrl+a, d |
현재 세션에서 분리 (나가기) |
Ctrl+a, s |
세션 목록 보기 (방향키로 선택, Enter로 전환) |
세션 완전 삭제
# tmux 바깥에서
tmux kill-session -t frontend
8. 복사 & 붙여넣기 (스크롤)
스크롤하기
tmux 안에서는 그냥 마우스 휠로 스크롤하면 됩니다. (마우스 모드 활성화되어 있음)
| 키 | 동작 |
|---|---|
Ctrl+a, [ |
복사 모드 진입 (스크롤/선택 가능) |
위/아래 또는 k j |
위아래 스크롤 |
q |
복사 모드 나가기 |
텍스트 복사하기
1. Ctrl+a, [ -> 복사 모드 진입
2. 방향키로 이동 -> 복사할 시작점으로
3. v -> 선택 시작 (노란색으로 하이라이트)
4. 방향키로 이동 -> 복사할 끝점까지
5. y -> 복사! (Windows 클립보드에 저장됨)
복사한 텍스트는 Ctrl+V로 다른 곳에 붙여넣을 수 있습니다.
9. 실전 예시
예시 1: 웹 개발 작업 환경
tmux new -s dev
1. 첫 화면에서 코드 편집기 실행 (예: vim)
2. Ctrl+a, | -> 오른쪽에 새 패널
3. npm run dev -> 개발 서버 실행
4. Ctrl+a, h -> 왼쪽 패널로 돌아가기
5. Ctrl+a, - -> 아래에 새 패널
6. git status -> git 작업
결과:
+─────────────────┬──────────────+
| | |
| vim (코드편집) | npm run dev |
| | (서버 실행) |
+─────────────────| |
| git 작업 | |
| | |
+─────────────────┴──────────────+
예시 2: 로그 모니터링
tmux new -s monitor
1. Ctrl+a, | -> 좌우 분할
2. 왼쪽: tail -f /var/log/app.log
3. Ctrl+a, l -> 오른쪽으로 이동
4. Ctrl+a, - -> 오른쪽을 상하 분할
5. 위: htop (시스템 모니터)
6. Ctrl+a, j -> 아래로 이동
7. 아래: docker logs -f container
결과:
+─────────────────┬──────────────+
| | htop |
| app.log +──────────────|
| | docker logs |
+─────────────────┴──────────────+
예시 3: 퇴근하고 다음날 복원
tmux의 진짜 힘이 발휘되는 순간! 퇴근할 때 tmux에서 detach하고, 다음날 출근해서 attach하면 어제 작업 그대로입니다.
[퇴근할 때]
Ctrl+a, d -> tmux에서 나가기
터미널 닫기 -> OK, tmux는 살아있음
[다음날]
새 터미널 열기
tmux attach -t dev -> 어제 작업 그대로!
10. 자주 쓰는 키 요약 (치트시트)
꼭 외울 것 (5개)
| 키 | 동작 | 빈도 |
|---|---|---|
Ctrl+a, | |
좌우 분할 | 매일 |
Ctrl+a, - |
상하 분할 | 매일 |
Alt+h/j/k/l |
패널 이동 | 매분 |
Ctrl+a, d |
세션 나가기 | 매일 |
Ctrl+a, z |
패널 전체화면 | 자주 |
알아두면 좋은 것
| 키 | 동작 |
|---|---|
Ctrl+a, c |
새 윈도우 |
Ctrl+a, 1/2/3 |
윈도우 전환 |
Ctrl+a, x |
패널 닫기 |
Ctrl+a, , |
윈도우 이름 변경 |
Ctrl+a, s |
세션 목록 |
Ctrl+a, r |
설정 리로드 |
11. 문제 해결
“키가 안 먹어요”
- tmux 안에 있는지 확인 -> 화면 아래 상태바가 보여야 합니다
Ctrl+a를 누르고 반드시 손을 뗀 후 다음 키를 누르세요- 설정 리로드:
Ctrl+a, r
“tmux가 이미 실행 중이라고 나와요”
tmux attach # 기존 세션에 접속
“세션을 전부 정리하고 싶어요”
tmux kill-server # 모든 세션 종료 (주의!)
tmux kill-server는 모든 세션이 종료됩니다. 실행 중인 프로세스도 모두 종료되니 주의하세요.
“마우스가 안 돼요”
# tmux 안에서
Ctrl+a, r # 설정 리로드
“화면이 깨져요”
# tmux 안에서
Ctrl+a 누르고 :을 입력하면 명령줄이 나옵니다
clear-history 입력 후 Enter
12. tmux 플러그인 설치 (최초 1회)
tmux 안에서:
Ctrl+a 누르고 손 떼고, Shift+i (대문자 I) 누르기
잠시 후 플러그인 설치 완료 메시지가 나옵니다:
- tmux-resurrect: 세션 저장/복원 (재부팅 후에도!)
- tmux-continuum: 10분마다 자동 저장
세션 수동 저장/복원
| 키 | 동작 |
|---|---|
Ctrl+a, Ctrl+s |
세션 저장 |
Ctrl+a, Ctrl+r |
세션 복원 |
다음 단계 / 추가 학습
추천 학습 순서:
- 오늘: 패널 분할(
|,-)과 이동(Alt+h/j/k/l)만 연습- 이번 주: 윈도우(
c,1/2/3)와 세션(d,attach) 익히기- 다음 주: 복사 모드와 플러그인 활용
문서 작성일: 2026-02-07 환경: WSL2 Ubuntu 24.04 + tmux 3.4 + 커스텀 설정