2P by GN⁺ 8시간전 | ★ favorite | 댓글 1개
  • ~/.tmux.conf 설정 파일을 통해 키 바인딩, 색상, 상태바, 마우스 동작 등을 자유롭게 조정할 수 있음
  • 기본 Prefix 키 C-bC-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에서도 참고 가능
  • 전체 설정은 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로 연결 유지하면서 훨씬 만족스러움
  • 키 바인딩 얘기하자면, ^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줄짜리 설정 파일이 필요하다는 게 함정임
    기본 상태는 불친절하지만, 손을 많이 보면 정말 훌륭해짐
    내 설정 파일을 참고할 수 있음

    • 나는 아무 설정도 바꾸지 않았지만 충분히 쓸 만하다고 느낌
      필요한 단축키는 9개 정도만 외웠음
    • 내 설정 파일을 어디서든 wget이나 curl로 쉽게 받을 수 있게 해둠
      PowerShell 버전도 추가할 예정임
    • 나는 jcs의 설정을 참고해서 몇 줄만 복사함
      프리픽스 바인딩만 원래대로 되돌렸음
  • 예전에 주말 동안 “tmux 2: mouse-free productivity” 책을 읽었는데, 내 생산성에 가장 큰 영향을 준 책 중 하나였음
    최신판도 계속 업데이트되고 있음 → tmux 3: productive mouse-free development

    • 다만 책에서 tmux의 원작자나 기원에 대한 언급이 없어서 아쉬웠음
    • 좋은 참고서 소개에 감사함