tmux를 보기 좋고 사용하기 쉽게 만드는 방법 (2024)
(hamvocke.com)~/.tmux.conf설정 파일을 통해 키 바인딩, 색상, 상태바, 마우스 동작 등을 자유롭게 조정할 수 있음- 기본 Prefix 키
C-b를C-a로 변경하고, Caps Lock을 Ctrl로 리매핑해 입력 효율을 높일 수 있음 - 창 분할을
",%대신|,-키로 직관적으로 수행하고,r키로 설정 파일을 즉시 재로드 가능 - Alt + 방향키로 패널 전환, 마우스 모드 활성화, 창 이름 자동 변경 중지 등으로 조작 편의성 향상
- 색상, 상태바, 메시지, 테두리 등 시각 요소를 세밀하게 꾸며 일관된 테마 구성을 구현할 수 있음
tmux 사용자 정의 기본 개념
- tmux 설정 파일은
tmux.conf로, 사용자 홈 디렉터리의~/.tmux.conf에 두면 개인 설정으로 적용됨- 여러 사용자가 공유하려면 시스템 전역 디렉터리에 둘 수 있으며, 운영체제마다 위치가 다름
man tmux의-f옵션 설명에서 정확한 위치 확인 가능
- 설정 파일을 수정해 키 바인딩, 색상, 상태바, 마우스 동작 등을 자유롭게 변경 가능
덜 불편한 Prefix 키 설정
- 기본 Prefix 키
C-b를 더 접근하기 쉬운C-a로 변경 가능C-a는 bash의 “줄 맨 앞으로 이동” 명령과 충돌할 수 있음- Caps Lock 키를 Ctrl로 리매핑하면 Prefix 조합을 더 쉽게 입력 가능
- 설정 예시는 다음과 같음
unbind C-b set-option -g prefix C-a bind-key C-a send-prefix C-a C-a로 기존 bash 명령을 여전히 사용할 수 있음
직관적인 창 분할 명령
- 기본 분할 키
",%대신 시각적으로 직관적인|,-사용|는 수평 분할,-는 수직 분할로 설정- 기존 키 바인딩은 해제
bind | split-window -h bind - split-window -v unbind '"' unbind %
설정 파일 빠른 재로드
tmux.conf를 자주 수정할 경우 단축키로 즉시 재로드 가능r키에 설정 파일 재적용 명령을 바인딩
bind r source-file ~/.tmux.conf
빠른 패널 전환
- Alt(메타) 키 + 방향키로 Prefix 없이 패널 이동 가능
Alt-Left,Alt-Right,Alt-Up,Alt-Down으로 각각 이동
bind -n M-Left select-pane -L bind -n M-Right select-pane -R bind -n M-Up select-pane -U bind -n M-Down select-pane -D
마우스 모드 활성화
- 마우스로 창 선택, 패널 크기 조절 가능
- 키보드 중심 사용이 기본이지만, 협업 시 유용
- 페어 프로그래밍 등에서 자주 활용 가능
set -g mouse on
창 이름 자동 변경 중지
- 수동으로 지정한 창 이름이 명령 실행 시 자동으로 덮어씌워지는 현상 방지
set-option -g allow-rename off
tmux의 외형 변경
- 색상, 상태바, 메시지, 패널 테두리 등을 세밀하게 조정 가능
STYLES섹션 참고 시 다양한 시각 요소 설정 가능- 기본 터미널 색상(
red,yellow,black등)을 사용하면 테마와 자연스럽게 어울림 - 256색 모드 사용 시
colour0~colour256지정 가능
- 예시 설정에는 다음 항목 포함
-
벨 알림 비활성화**,** 시계 색상 yellow**,** 복사 모드 스타일 fg=black bg=red bold
-
패널 테두리 색상 red**,** 활성 패널 테두리 yellow
-
상태바 위치 bottom**,** 좌측 공백**,** 우측 시간 표시
-
현재 창 스타일 fg=black bg=red**,** 일반 창 스타일 fg=red bg=black
- 메시지 스타일 fg=yellow bg=red bold
- 이러한 설정으로 일관된 색상 구성과 시각적 구분을 제공
-
추가 참고 자료
- 다양한 tmux 설정 예시는 GitHub의
tmux.conf또는dotfiles저장소에서 확인 가능- Reddit의
/r/dotfiles,/r/unixporn에서도 참고 가능
- Reddit의
- 전체 설정은 GitHub dotfiles 저장소에 공개됨
- 심화 학습을 위해 tmux의 man 페이지와 tmux wiki의 Configuring tmux 섹션 참고 권장
- 최신 기능과 세부 옵션을 모두 다룸
- 터미널 색상 테마를 직접 디자인하려면 Root Loops(https://rootloops.sh/) 사용 가능
- 개인 맞춤형 터미널 색상 구성 지원
Hacker News 의견들
-
나는 예전에 tmux를 쓰다가 Zellij을 발견한 뒤로 완전히 갈아탐
탭과 패널 설정이 훨씬 직관적이고, 마우스로 스크롤과 텍스트 선택이 편해서 복사·붙여넣기가 쉬움- Zellij 다운로드 페이지를 보다가 느낀 건데, 링크에 버튼을 쓰지 말았으면 함
버튼 링크는 우클릭 복사가 안 되고 접근성 면에서도 좋지 않음 - Zellij의 유일한 치명적 단점은 키보드로 화면에서 복사/붙여넣기가 안 되고, 여러 클립보드 버퍼를 지원하지 않는 점임
tmux에서는 1~2분마다 이 기능을 쓰는데, Zellij 개발자들은 데이터를 에디터로 파이프하라고 하지만 시스템 클립보드와는 호환이 안 됨
그래서 결국 tmux로 돌아왔음 - 임베디드 장비를 쓰는 입장에서 Zellij는 너무 큼
Zellij는 약 50MB인데 tmux는 의존 라이브러리 포함해도 2MB 정도라 용량 차이가 큼 - 최근 2주간 zmx를 써봤는데, 약간의 화면 리페인트 버그가 있지만 ghostty와 함께 쓰기엔 꽤 쾌적함
- 나도 Zellij로 갔다가 다시 tmux로 돌아옴
Zellij가 점점 비대해져서 불편했고, 지금은 tmuxp로 세션을 구성하고 autossh로 연결 유지하면서 훨씬 만족스러움
- Zellij 다운로드 페이지를 보다가 느낀 건데, 링크에 버튼을 쓰지 말았으면 함
-
키 바인딩 얘기하자면, ^a는 screen, ^b는 tmux의 전통임
여러 시스템을 다루는 관리자라면 기본 키맵을 익히는 게 중요함
개인 설정은 색상, 활성 패널 배경, 타임스탬프 시계, 마우스 활성화 정도만 바꿨고, 키 바인딩은 그대로 둠
익숙해지면 기본값이 오히려 편함 -
Shift+Enter가 안 돼서 tmux를 포기하고 Zellij로 갔었음
하지만 Zellij가 panic 크래시로 프로세스를 날려버려서 결국 tmux로 복귀함
해결책은"bind-key -T root S-Enter send-keys C-j"였고, 이 이슈에서 찾음- 나는
"bind -n S-Enter send-keys Escape '[13;2u'"로 해결했음
pi.dev가 extended-keys 설정 없다고 경고하지만 잘 작동함 - 덕분에 찾던 해결책을 얻었음
- multiplexer가 죽었는데 자식 프로세스가 계속 살아있는 경우가 가능한지 궁금함
tmux에서는 서버를 죽이면 하위 프로세스도 정리돼서 편했음 - 내 경우엔 Shift+Enter는 안 되고 Option+Enter로 새 줄이 입력됨 (MacOS, Claude Code 환경)
- 새로운 바인딩을 피하려면
\ + Enter조합으로도 가능함
- 나는
-
tmux의 Control Mode를 알고 나서 완전 게임 체인저였음
tmux -CC를 iTerm2에서 실행하면 탭, 스크롤, 복사/붙여넣기, 단축키 등이 터미널 네이티브로 작동함
시각적으로 탭도 다 보이고, 초보자에게 특히 유용함- 이 기능 때문에 맥을 쓰고 있음. 10년간 리눅스 터미널 중 이걸 구현한 곳은 없었음
- 나도 -CC 모드가 완벽히 잘 작동하고 있음
- ghostty에서도 작동하는지 궁금함
- 이제야 -CC가 뭘 하는지 이해했음
- 감탄이 절로 나옴
-
나는 tmux에서 Alt+숫자로 빠른 윈도 전환을 쓰고 있음
예:bind-key -n M-1 select-window -t :1식으로 설정
Alt-/로 vi 스타일 복사 모드도 열 수 있음
Wayland 환경에서는wl-copy를 써서 마우스 드래그나y키로 복사 가능
Powerline 스타일 디자인도 추가했는데, powerline-fonts가 필요함 -
tmux를 너무 커스터마이징한 나머지, 새 서버에 ssh 접속하면 기본 사용법을 잊어버림
지금은 기본 설정으로 쓰고 있음. 다만 마우스 스크롤 설정만은 매번 바꿔야 함- dotfiles 저장소를 만들어서 tmux, zsh 등의 설정을 관리하냐고 물어봄
- 이건 Emacs의 저주와 비슷함. 무한히 커스터마이징 가능하지만 결국 자신만의 독특한 환경이 되어버림
관련 개념으로 The Lisp Curse도 있음 - 나도 같은 문제를 겪었는데, 기본 설정을 덮어쓰지 않고 비충돌 설정만 추가하는 방식으로 해결했음
예를 들어 Ctrl-b는 그대로 두고, Ctrl-space를 추가 단축키로 씀 - 나도 Emacs에서 같은 경험을 했음. 디스크가 날아가서 커스텀 설정을 잃은 뒤 거의 기본 상태로 돌아감
- “Claude, 내 tmux 설정을 그 서버로 scp 해줘” 같은 농담이 나올 정도임
-
iTerm2에서 tmux의 Control Mode에 감탄했음
로컬 창 관리자로 원격 터미널 윈도우를 제어할 수 있음
ghostty에서도 해당 기능 구현이 진행 중이라 기대 중임 -
tmux의 기본 프리픽스 키(C-b)가 어색하다는 의견이 많지만, 나는 오히려 그 어색함이 장점이라고 생각함
실수로 눌릴 일이 거의 없음
분할 명령도 나에겐 직관적임 —%는 수평선,"는 수직선처럼 느껴짐
설정 리로드도 초기에만 자주 했고, 지금은 거의 안 함- 나도 기본 프리픽스 키를 좋아함
필요하면.tmux.conf에
이렇게 추가하면 됨. 로컬에서만 쓰면 충돌 걱정도 없음unbind-key -T prefix C-b set-option -g prefix C-s
- 나도 기본 프리픽스 키를 좋아함
-
tmux를 사랑하지만, 400줄짜리 설정 파일이 필요하다는 게 함정임
기본 상태는 불친절하지만, 손을 많이 보면 정말 훌륭해짐
내 설정 파일을 참고할 수 있음 -
예전에 주말 동안 “tmux 2: mouse-free productivity” 책을 읽었는데, 내 생산성에 가장 큰 영향을 준 책 중 하나였음
최신판도 계속 업데이트되고 있음 → tmux 3: productive mouse-free development- 다만 책에서 tmux의 원작자나 기원에 대한 언급이 없어서 아쉬웠음
- 좋은 참고서 소개에 감사함