tmux 설치 및 단축키 정리
in Blog on Tmux, Terminal, 개발환경, Claudecode
Claude Code, Gemini CLI, Codex를 동시에 돌리다 보니, 여러 터미널 세션을 동시에 관리해야 할 필요성이 생겼다. 개발동생 유튜브에서도 같은 이슈를 다루고 있어서, 이를 참고해 Ghostty(터미널 에뮬레이터) + tmux(터미널 멀티플렉서) 조합으로 세팅했다.
tmux란
tmux는 터미널 멀티플렉서(terminal multiplexer)로, 하나의 터미널 창 안에서 여러 세션, 윈도우, 패널을 동시에 운영할 수 있게 해준다. 세션을 종료하지 않고 detach 할 수 있어서, 터미널을 닫아도 세션은 백그라운드에서 살아 있고, 나중에 다시 attach해서 이어서 작업할 수 있다. 이런 특징을 이용해 각 패널이나 윈도우 간 비동기 작업 후 결과를 서로 공유하는 것도 가능하다.
tmux는 Session - Window - Pane의 3계층으로 작업 공간을 구성한다.
Session
└── Window 0
│ ├── Pane 0 (좌)
│ └── Pane 1 (우)
└── Window 1
└── Pane 0
...
| 단위 | 역할 |
|---|---|
| Session | 독립된 작업 맥락. 프로젝트 단위로 분리하기 좋다. |
| Window | 세션 안의 탭. 브라우저 탭처럼 전환 가능. |
| Pane | 윈도우 안을 분할한 터미널 패널. |
설치
# macOS
brew install tmux
# Ubuntu/Debian
sudo apt install tmux
단축키
tmux 세션 내에서, 모든 단축키는 prefix 입력 후 명령 키를 눌러야 한다(기본값: Ctrl+b).
세션 관련
- 세션 밖(터미널 프롬프트)
| 명령어 | 설명 |
|---|---|
tmux new | 새 세션 생성 |
tmux new -s dev | dev라는 이름으로 세션 생성 |
tmux attach | 마지막 세션에 재접속 |
tmux attach -t dev | dev 세션에 재접속 (이름 또는 번호) |
tmux ls | 열려 있는 세션 목록 확인 |
tmux kill-session -t dev | dev 세션 강제 종료 |
- 세션 안(prefix 후 입력)
| 단축키 | 설명 |
|---|---|
d | 현재 세션 detach (세션은 유지, 터미널만 빠져나옴) |
$ | 현재 세션 이름 변경 |
s | 열려 있는 세션 목록 표시 → 엔터로 이동 / →로 윈도우·패널 미리보기 |
윈도우 관련 (prefix 후 입력)
| 단축키 | 설명 |
|---|---|
c | 새 윈도우 생성 |
p | 이전 윈도우로 이동 |
n | 다음 윈도우로 이동 |
0~9 | 번호로 특정 윈도우 이동 |
, | 현재 윈도우 이름 변경 |
w | 전체 윈도우 목록 펼쳐서 확인 → 좌측 번호 입력해서 이동 |
Pane 관련 (prefix 후 입력)
| 단축키 | 설명 |
|---|---|
% | 현재 pane을 좌우로 분할 |
" | 현재 pane을 상하로 분할 |
방향키 | 인접한 pane으로 이동 |
z | 현재 pane 전체화면 토글 (다시 누르면 원복) |
x | 현재 pane 닫기 (확인 메시지 있음) |
Ctrl+d | 현재 pane 즉시 닫기 (확인 없음, 마지막 pane이면 작동 안 함) |
x와Ctrl+d로 닫은 pane/window/session은attach로 재접근 불가.
tmux send / capture
AI 도구를 여러 pane에 나눠 돌릴 때 유용한 명령어다. 쉘 스크립트나 자동화 코드에서 특정 pane에 명령을 보내거나 출력을 가져올 수 있다.
# 특정 pane에 명령어 전송
# -t 옵션: session:window.pane 형식
tmux send-keys -t dev:0.1 "ls -al" Enter
# 특정 pane의 출력 내용 가져오기
tmux capture-pane -t dev:0.1 -p