
1편에서 세션, 윈도우, 패널 개념과 기본 단축키를 다뤘습니다. 2편에서는 ~/.tmux.conf 설정으로 tmux를 실제로 쓰기 편하게 만드는 방법을 정리합니다.
기본 설정 그대로 쓰는 것도 가능하지만, prefix 키 하나만 바꿔도 체감이 크게 달라집니다. 설정을 조금씩 손대다 보면 자기 흐름에 맞는 환경이 만들어집니다.
~/.tmux.conf
tmux 설정 파일입니다. 없으면 만들면 됩니다.
touch ~/.tmux.conf
설정 변경 후 tmux 안에서 바로 반영하려면 아래 명령어를 씁니다.
# tmux 안에서
prefix + :
:source-file ~/.tmux.conf
# 또는 터미널에서
tmux source-file ~/.tmux.conf
prefix 키 변경
Ctrl+b는 기본값인데, 손 위치 때문에 불편하다는 사람이 많습니다. Ctrl+a로 바꾸는 게 가장 흔한 선택입니다.
# prefix를 Ctrl+a로 변경
unbind C-b
set -g prefix C-a
bind C-a send-prefix
bind C-a send-prefix는 tmux 안에서 실제로 Ctrl+a를 쉘에 보내야 할 때(줄 맨 앞으로 이동 등) Ctrl+a를 두 번 누르면 되게 해줍니다.
자주 쓰는 기본 설정
# 마우스 사용 허용 (스크롤, 패널 클릭, 크기 조절)
set -g mouse on
# 윈도우/패널 번호를 1부터 시작 (0 대신)
set -g base-index 1
setw -g pane-base-index 1
# 윈도우 삭제 후 번호 자동 재정렬
set -g renumber-windows on
# 상태바 갱신 주기 (초)
set -g status-interval 5
# 히스토리 길이 늘리기
set -g history-limit 10000
# 터미널 색상 지원
set -g default-terminal "screen-256color"
set -ag terminal-overrides ",xterm-256color:RGB"
# ESC 입력 지연 제거 (vim에서 ESC 반응 느릴 때)
set -s escape-time 0
# 현재 경로에서 패널 분할
bind '"' split-window -v -c "#{pane_current_path}"
bind '%' split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
-c "#{pane_current_path}"는 분할할 때 현재 작업 디렉토리를 이어받게 합니다. 없으면 항상 홈 디렉토리에서 시작합니다.
키 바인딩 커스터마이징
패널 이동을 vim 스타일로
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
prefix 없이 Ctrl+h/j/k/l로 이동하고 싶으면 이렇게 씁니다.
bind -n C-h select-pane -L
bind -n C-j select-pane -D
bind -n C-k select-pane -U
bind -n C-l select-pane -R
-n은 prefix 없이 바로 쓰는 바인딩입니다.
설정 파일 빠른 리로드
bind r source-file ~/.tmux.conf \; display "설정 리로드 완료"
prefix + r로 설정을 바로 반영합니다. \;는 tmux 명령어를 이어서 실행하는 구분자입니다.
copy mode 키바인딩을 vim 스타일로
setw -g mode-keys vi
bind [ copy-mode
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-selection-and-cancel
bind -T copy-mode-vi C-v send -X rectangle-toggle
bind ] paste-buffer
이 설정이 있으면 copy mode에서 v로 선택, y로 복사, C-v로 블록 선택이 됩니다. vim과 동일한 흐름입니다.
시스템 클립보드에도 복사하려면 xclip이나 xsel(Linux), pbcopy(macOS)를 연결합니다.
# macOS
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "pbcopy"
# Linux (xclip 필요)
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "xclip -selection clipboard"
상태바 커스터마이징
# 상태바 위치 (top / bottom)
set -g status-position bottom
# 상태바 색상
set -g status-bg colour235
set -g status-fg colour248
# 왼쪽: 세션 이름
set -g status-left " #S "
set -g status-left-length 20
# 오른쪽: 시간
set -g status-right " %Y-%m-%d %H:%M "
set -g status-right-length 40
# 현재 윈도우 스타일
setw -g window-status-current-style fg=colour255,bg=colour238,bold
setw -g window-status-current-format " #I:#W "
# 비활성 윈도우 스타일
setw -g window-status-format " #I:#W "
#S는 세션 이름, #I는 윈도우 번호, #W는 윈도우 이름으로 치환되는 tmux 변수입니다.
tpm — tmux 플러그인 매니저
tmux도 플러그인으로 기능을 확장할 수 있습니다. tpm(Tmux Plugin Manager)이 사실상 표준입니다.
설치
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
~/.tmux.conf에 추가
# 플러그인 목록
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
# 파일 맨 마지막 줄에
run '~/.tmux/plugins/tpm/tpm'
설정 후 tmux 안에서 prefix + I(대문자)를 누르면 플러그인이 설치됩니다.
플러그인 단축키
prefix + I 플러그인 설치
prefix + U 플러그인 업데이트
prefix + Alt+u 사용하지 않는 플러그인 삭제유용한 플러그인들
tmux-sensible
기본값을 좀 더 합리적으로 바꿔주는 설정 모음입니다. 딱히 건드릴 것 없이 넣어두면 됩니다.
set -g @plugin 'tmux-plugins/tmux-sensible'
tmux-resurrect
tmux 세션, 윈도우, 패널 레이아웃을 저장하고 복원합니다. 서버 재시작 후에도 이전 작업 환경을 그대로 되살릴 수 있습니다.
set -g @plugin 'tmux-plugins/tmux-resurrect'
prefix + Ctrl+s 세션 저장
prefix + Ctrl+r 세션 복원tmux-continuum
tmux-resurrect를 자동화합니다. 일정 간격으로 자동 저장하고, tmux 시작 시 자동 복원합니다.
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on' # 자동 복원 활성화
set -g @continuum-save-interval '15' # 15분마다 자동 저장
tmux-yank
copy mode에서 시스템 클립보드로 복사를 쉽게 해줍니다. macOS, Linux 모두 자동으로 감지합니다.
set -g @plugin 'tmux-plugins/tmux-yank'
전체 설정 예시
처음 시작할 때 바로 쓸 수 있는 최소한의 설정입니다.
# ~/.tmux.conf
# prefix 변경
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 기본 설정
set -g mouse on
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
set -g history-limit 10000
set -s escape-time 0
set -g default-terminal "screen-256color"
# 현재 경로 유지
bind '"' split-window -v -c "#{pane_current_path}"
bind '%' split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
# 패널 이동 (vim 스타일)
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# 설정 리로드
bind r source-file ~/.tmux.conf \; display "리로드 완료"
# copy mode vim 스타일
setw -g mode-keys vi
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-selection-and-cancel
# 플러그인
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-yank'
run '~/.tmux/plugins/tpm/tpm'
정리 표
| 분류 | 설정 / 단축키 | 동작 |
|---|---|---|
| 설정 | set -g mouse on |
마우스 활성화 |
| 설정 | set -g base-index 1 |
번호 1부터 시작 |
| 설정 | set -s escape-time 0 |
ESC 지연 제거 |
| 키 | prefix + r |
설정 리로드 |
| 키 | prefix + h/j/k/l |
vim 스타일 패널 이동 |
| copy | mode-keys vi |
vim 키바인딩 |
| copy | v → y |
선택 → 복사 |
| tpm | prefix + I |
플러그인 설치 |
| 플러그인 | tmux-resurrect | 세션 저장/복원 |
| 플러그인 | tmux-continuum | 자동 저장/복원 |
| 플러그인 | tmux-yank | 클립보드 연동 |
'블로그, 컴퓨터 > Cheatsheets' 카테고리의 다른 글
| CMake 정리 (2편) — 서브디렉토리, 외부 라이브러리, 실용 패턴 (0) | 2026.05.30 |
|---|---|
| CMake 정리 (1편) — 개념, CMakeLists.txt, 기본 빌드 (0) | 2026.05.30 |
| tmux 정리 (1편) — 세션, 윈도우, 패널 (0) | 2026.05.29 |
| Shell Script 정리 (2편) — 에러 처리, 문자열, 실용 패턴 (0) | 2026.05.28 |
| Shell Script 정리 (1편) — 변수, 조건문, 반복문, 함수 (0) | 2026.05.28 |