포스트

tmux 기본 조작 Cheat Sheet — session·window·pane

tmux의 session·window·pane 구조, attach/detach, 기본 키, copy-mode, target 문법을 빠르게 확인하는 입문용 조작 Reference. 설정·플러그인은 별도 글로 분리한다.

tmux 기본 조작 Cheat Sheet — session·window·pane

tmux는 하나의 terminal 안에서 여러 작업 공간을 유지하는 terminal multiplexer다. 기본 구조는 아래처럼 잡으면 된다.

1
2
3
session
└─ window
   └─ pane
  • session: tmux가 유지하는 작업 묶음. detach해도 background에 남는다.
  • window: session 안의 탭 같은 단위.
  • pane: window 안에서 분할된 실제 shell/process 영역.

이 글은 tmux 로드맵의 입문 Reference다. .tmux.conf 설정과 TPM 플러그인 기본 구성은 tmux 설정과 TPM 플러그인, 세션 자동화는 tmux 세션 부트스트랩에서 이어진다.


설치와 설정 파일

1
2
3
brew install tmux         # macOS
sudo apt-get install tmux # Ubuntu
sudo yum install tmux     # CentOS

설정 파일은 보통 ~/.tmux.conf에 둔다. 현재 server에 다시 읽히려면 다음을 실행한다.

1
tmux source-file ~/.tmux.conf

session

생성

1
2
3
4
tmux
tmux new
tmux new-session
tmux new -s work

접속 / 분리

1
2
3
4
tmux attach
tmux attach-session
tmux a
tmux a -t work
키설명
Ctrl+b d현재 session detach
Ctrl+b $session 이름 변경
Ctrl+b )다음 session
Ctrl+b (이전 session
Ctrl+b wsession/window 목록

종료

1
2
tmux kill-session
tmux kill-session -t work

전체 tmux server를 종료하려면 다음을 쓴다.

1
tmux kill-server

window

window는 session 안의 탭 같은 단위다.

키설명
Ctrl+b c새 window 생성
Ctrl+b n다음 window
Ctrl+b p이전 window
Ctrl+b l마지막으로 사용한 window
Ctrl+b 0~9번호로 이동
Ctrl+b '번호/이름 입력 후 이동
Ctrl+b ,window 이름 변경
Ctrl+b .window 번호 변경
Ctrl+b &window 종료
Ctrl+b fwindow 검색
Ctrl+b z현재 pane 확대/축소

pane

pane은 window 안에서 분할된 실제 process 영역이다.

키설명
Ctrl+b %좌우 분할
Ctrl+b "상하 분할
Ctrl+b 방향키pane 이동
Ctrl+b o다음 pane
Ctrl+b ;이전 pane
Ctrl+b { / }pane 위치 이동
Ctrl+b !pane을 새 window로 분리
Ctrl+b xpane 종료
Ctrl+b qpane 번호 표시

크기 조절은 명령 프롬프트(Ctrl+b :)에서 실행할 수 있다.

resize-pane -D 10
resize-pane -U 10
resize-pane -L 10
resize-pane -R 10

copy-mode와 scroll

키설명
Ctrl+b [copy-mode 진입 / scroll 시작
Ctrl+b ]paste buffer 붙여넣기
qcopy-mode 종료

vi 스타일 copy-mode를 쓰려면 설정에 아래 한 줄을 둔다.

setw -g mode-keys vi

vi key 기준 기본 조작은 다음과 같다.

키설명
Space선택 시작
Enter선택 복사
Esc선택 취소
h/j/k/l이동
g / G위/아래 끝 이동
/검색
#paste buffer 목록

마우스 scroll과 pane 선택이 필요하면 설정에 다음을 추가한다.

set -g mouse on

target 문법: session:window.pane

join-pane, swap-pane, move-window 같은 명령은 대상을 주소로 지정한다.

1
session:window.pane

예를 들어 work:2.1은 work session의 2번 window, 1번 pane을 뜻한다. 생략한 자리는 현재 위치로 채워진다.

1
2
3
-t 1      현재 session의 window 1
-t .1     현재 window의 pane 1
-t work:2 work session의 window 2

핵심은 -s와 -t다.

  • -s는 source, 움직이는 대상이다.
  • -t는 target, 도착지다.
  • swap-* 계열은 자리 교환이라 방향성이 약하지만, 그래도 source/target 주소를 명시하면 실수가 줄어든다.

window·pane 이동 명령

명령 프롬프트(Ctrl+b :)나 shell에서 실행할 수 있다.

join-pane -s 2 -t 1      # window 2의 pane을 window 1로 이동
join-pane -h -s 2 -t 1   # 오른쪽에 붙이기(-h). -v는 아래
join-pane -b -s 2 -t 1   # before: 반대쪽에 붙이기
break-pane -s 1 -t 2     # pane을 다른 window로 분리
swap-pane -s 1 -t 2      # pane 자리 교환
swap-window -s 1 -t 2    # window 자리 교환
move-window -s 1 -t 5    # window 1을 빈 번호 5로 이동
move-window -r           # window 번호를 빈칸 없이 재정렬

pane을 “합친다”고 말하기 쉽지만, 실제로는 살아 있는 process를 다른 window로 이동하는 것이다. 이 정신 모델은 tmux엔 왜 pane ‘병합(merge)’이 없을까에서 더 자세히 다룬다.


다음에 볼 글

목적글
설정·TPM 기본 구성tmux 설정과 TPM 플러그인
추가 플러그인 선택필수 그다음 — 요즘 얹는 tmux 플러그인
세션 자동 생성tmux 세션 부트스트랩
전체 학습 순서tmux 로드맵
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.