0Guhn
0Guhn

터미널 생산성을 높이는 Tmux 개인 설정

#tmux#terminal#생산성

0. 왜 Tmux를 써야 할까? (Why Tmux?)

터미널을 **'웹 브라우저'**에 비유하면 이해가 빠르다.

멀티태스킹 (탭과 창) 브라우저에서 탭을 여러 개 띄워 검색, 유튜브, 메일을 동시에 보듯, Tmux는 하나의 터미널 창 안에서 서버 실행, 코드 수정, 로그 확인을 동시에 할 수 있게 해준다.

세션 유지 (안전장치) 가장 강력한 기능이다. 원격 서버에서 작업하다가 인터넷이 끊기거나 실수로 터미널을 닫아도, Tmux 세션은 백그라운드에서 계속 살아있다. 다시 접속(attach)하면 작업하던 모습 그대로 복구된다.

용어

  • 세션 (Session)

    • 브라우저 창 전체와 같다.
    • A 프로젝트, B 프로젝트를 따로 띄우듯, 작업의 큰 문맥을 통째로 담아두는 가장 큰 그릇이다.
  • 윈도우 (Window)

    • 브라우저의 **'탭(Tab)'**과 같다.
    • 하나의 세션 안에서 서버(1번), **DB(2번)**처럼 용도별로 화면을 전환하며 사용하는 공간이다.
  • 페인 (Pane)

    • 탭 하나를 상하좌우로 쪼갠 화면이다.
    • 한 윈도우 안에서 왼쪽은 에디터, 오른쪽은 로그를 동시에 띄워두고 보는 분할된 영역이다.

1. 설치 및 필수 플러그인 (Installation)

Mac(Homebrew) 환경 기준. 기본 설치 후 **TPM(Tmux Plugin Manager)**까지 설치해야 강력한 기능을 100% 활용할 수 있다.

1. Tmux 설치

brew install tmux

2. 플러그인 매니저(TPM) 설치

다양한 플러그인을 간편하게 관리하기 위해 필수다.

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

2. 실무 최적화 설정

(.tmux.conf) 기본 Tmux 설정(접두사 키 C+b가 멀어서 불편함)을 실무에 맞게 변경했다.

vi ~/.tmux.conf 파일을 생성하고 아래 내용을 그대로 넣는다.

# ==========================================
# 1. 기본 편의 설정
# ==========================================
# Prefix 키 변경 (기본 Ctrl+b는 손이 꼬임 -> Ctrl+a로 변경)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
 
# 마우스 사용 허용 (창 크기 조절, 스크롤 등)
set -g mouse on
 
# 인덱스 설정 (키보드 0번은 너무 머니까 1번부터 시작)
set -g base-index 1
set -g pane-base-index 1
set -g renumber-windows on   # 창 닫으면 번호 자동 정렬
 
# ==========================================
# 2. 키 바인딩 (Key Bindings)
# ==========================================
# 직관적인 화면 분할 (현재 경로 유지하며 분할)
# | : 좌우 분할
# - : 상하 분할
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
 
# Vim 스타일 복사 모드 (v:선택, y:복사)
set-window-option -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
 
# ==========================================
# 3. 플러그인 (Plugins)
# ==========================================
# Vim과 Tmux 간의 이동을 통합 (Ctrl+hjkl)
set -g @plugin 'christoomey/vim-tmux-navigator'
 
# 필수 플러그인 로드
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
 
# TPM 실행 (반드시 파일 맨 마지막에 위치)
run '~/.tmux/plugins/tpm/tpm'
  • 플러그인 관리자 (TPM)

    • 스마트폰의 앱스토어와 같은 역할이다. 복잡한 수동 설정 없이, 단축키(Ctrl + a + I) 한 번으로 필요한 플러그인을 즉시 설치하고 업데이트할 수 있게 해주는 핵심 도구다.
  • 필수 최적화 (Sensible)

    • 순정 상태의 답답한 키 입력 딜레이(Esc) 나 화면 출력 속도 문제를 해결해 환경 을세팅해준다.

설정 적용 방법:

  1. 위 파일을 저장한다.
  2. 터미널에서 tmux source ~/.tmux.conf를 입력한다.
  3. Tmux 실행 후 Ctrl + a 누르고 I (대문자 i) 를 눌러 플러그인을 설치한다.

3. 스마트 실행 함수

t

매번 생성 tmux new -s ...를 치는 것은 번거롭다. "없으면 만들고, 있으면 접속하는" 단축 명령어를 쉘 설정 파일(~/.zshrc 등)에 추가한다.

Bash

# t [이름] : 해당 세션이 있으면 접속, 없으면 생성
function t() {
  if [ -z "$1" ]; then
    # 이름 없이 't'만 치면 'main' 세션으로 연결
    tmux new -A -s main
  else
    # 't 프로젝트명' 치면 해당 세션으로 연결
    tmux new -A -s "$1"
  fi
}
  • 사용법: "Hello" 세션을 만들고싶다? -> 터미널에서 t Hello라고 치면 끝.

4. 핵심 단축키 치트시트 (Cheatsheet)

모든 명령은 **Prefix(Ctrl + a)**를 먼저 누르고 입력한다.

구분 단축키 (Ctrl + a 후) 설명
세션 s 세션 목록 보기/이동/삭제(x) (가장 중요)
d 세션 나가기 (Detach, 백그라운드 유지)
$ 현재 세션 이름 변경
윈도우 c 새 윈도우(탭) 생성
, 윈도우 이름 변경
n / p 다음 / 이전 윈도우 이동
페인 ` 백틱
- 화면 상하 분할
z 현재 패인 전체 화면 확대/복구 (Zoom)
이동 Ctrl + h,j,k,l 페인 간 이동 (Prefix 없이 바로 이동)

5. 트러블슈팅: 오른쪽 이동(Ctrl+l)이 안 될 때

Tip 마우스를 사용하지 않는 키보드 중심 환경에서 중요하다

설정을 완벽하게 했는데도 **"왼쪽(Ctrl+h)은 되는데 오른쪽(Ctrl+l)으로 이동이 안 되는 현상"**이 발생할 수 있다.

원인: 터미널 충돌

유닉스 시스템에서 Ctrl + l"화면 청소(Clear)" 명령어다. Tmux나 Vim이 신호를 받기 전에, 사용 중인 터미널 앱(iTerm2, Alacritty 등)이 이 키를 먼저 가로채서 발생하는 문제다

진단 방법 (cat 테스트)

범인을 확실히 잡기 위해 터미널에서 다음을 수행.

  1. 아무 쉘에서나 cat을 입력하고 엔터 (입력 대기 상태).
  2. Ctrl + l을 누른다.
    • 화면에 ^L이 찍힌다? → 정상 (터미널 문제 아님).

      Ctrl + l을 눌렀을 때 ^L이 찍히는 것은, 쉘이 해당 키 입력을 '리터럴(문자)'로 인식했다는 뜻입니다.

    • 화면이 싹 지워진다? → 범인 검거 (터미널이 키를 가로챔).

해결 방법

터미널 설정에서 Ctrl + l 매핑을 해제해야 한다.

  • iTerm2: Settings > Profiles > Keys > Key Mappings에서 ^l 항목 삭제.

  • Alacritty/Zsh: 쉘 설정(~/.zshrc)에 아래 코드를 추가하여 키 바인딩을 해제한다.

Ctrl+l 바인딩 해제 (Vim/Tmux에게 양보)

bindkey -r "^L"

Log

  • 2026-01-23: fleeting