tmux 커스터마이징으로 터미널을 내 손에 맞게 만들기
이전 글에서 tmux의 기본 사용법을 소개했는데, 처음 사용해본 분들이라면 아마 이런 생각이 들었을 겁니다. "단축키 조합이 정말 불편하네..."
안심하세요. 당신만 그런 게 아닙니다. GitHub의 수많은 블로그 글과 dotfiles 저장소를 보면 tmux를 좀 더 편하게 쓰기 위해 설정을 바꾸려는 사람들이 정말 많거든요.
다행히도 tmux 커스터마이징은 생각보다 간단합니다. 오늘은 tmux를 어떻게 커스터마이징할 수 있는지, 그리고 제가 자주 쓰는 설정들을 소개해보겠습니다.
tmux 커스터마이징하기
tmux 커스터마이징은 설정 파일을 편집하는 것처럼 간단합니다. tmux는 tmux.conf라는 파일로 설정을 관리하는데요. 이 파일을 ~/.tmux.conf에 저장하면(파일명 앞의 점 주목 - 숨겨진 파일입니다) 현재 사용자의 tmux 설정으로 인식됩니다. 만약 여러 사용자가 같은 설정을 쓰고 싶다면 시스템 전역 디렉토리에 저장할 수도 있습니다. 정확한 위치는 운영 체제마다 다르니 man tmux의 -f 파라미터 부분을 확인해보세요.
덜 불편한 프리픽스 키 설정
tmux 사용자들 사이에서 가장 많이 하는 커스터마이징이 바로 프리픽스를 C-b에서 다른 키로 바꾸는 것입니다. 저는 개인적으로 C-a를 쓰는데, 이게 bash의 "줄의 처음으로 가기" 명령과 충돌할 수 있다는 점은 주의하세요. C-a 바인딩 외에도 저는 Caps Lock을 Ctrl 키로 리맵핑했습니다. 어차피 Caps Lock은 안 쓰니까요. 이렇게 하면 프리픽스 키 조합을 훨씬 편하게 누를 수 있습니다.
C-b에서 C-a로 바꾸려면 tmux.conf에 다음 줄을 추가하면 됩니다.
# remap prefix from 'C-b' to 'C-a'
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
직관적인 창 분할 명령
개인적으로 가장 어려운 부분이 창 분할 단축키를 기억하는 거예요. "로 수직 분할, %로 수평 분할이라니, 이건 제 뇌에 안 들어옵니다. 대신 분할 모양을 직관적으로 표현하는 |과 -를 쓰는 게 훨씬 낫습니다. |는 수평 분할, -는 수직 분할이죠.
# split panes using | and -
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %
편리한 설정 파일 새로고침
tmux.conf를 자주 수정하다 보니 쉽게 설정을 다시 로드할 수 있으면 좋겠더라고요. 그래서 r 키로 설정 파일을 다시 로드하도록 설정했습니다.
# reload config file (change file location to your the tmux.conf you want to use)
bind r source-file ~/.tmux.conf
빠른 창 전환
tmux를 쓸 때 창 사이를 오가는 작업은 거의 매번 하는 거라 최대한 간단하게 해야 합니다. 저는 프리픽스 키를 매번 누르기보다 M-<방향키>로 바로 이동할 수 있으면 좋겠더라고요(M은 Meta, 보통 Alt 키입니다). 이 설정을 하면 Alt+왼쪽 화살표로 왼쪽 창으로 이동할 수 있습니다.
# switch panes using Alt-arrow without prefix
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
마우스 모드 활성화
tmux는 기본적으로 키보드 중심으로 설계되었으니까요(실제로 이게 가장 효율적입니다). 그런데 가끔은 마우스 상호작용이 유용할 때가 있습니다. 특히 다른 사람이 당신의 tmux 설정을 써야 할 때, 혹은 페어 프로그래밍을 할 때가 그렇죠. 마우스 모드를 활성화하면 창과 창을 클릭으로 선택할 수 있고, 창의 경계를 드래그해서 크기를 조절할 수도 있습니다. 꽤 편하면서도 대부분의 경우 방해가 되지 않으니 저는 보통 활성화합니다.
# Enable mouse control (clickable windows, panes, resizable panes)
set -g mouse on
자동 창 이름 변경 방지
저는 , 키로 tmux 창에 직접 이름을 붙이는데요. 이렇게 하면 각 창의 목적에 따라 이름을 지을 수 있어서 좋습니다. 그런데 기본 설정에서는 tmux가 창 내에서 마지막으로 실행한 명령에 따라 자동으로 제목을 바꿔버립니다. 이 동작을 막으려면 이 옵션을 꺼야 합니다.
# don't rename windows automatically
set-option -g allow-rename off
tmux의 외형 바꾸기
색상과 디자인을 바꾸는 건 지금까지 소개한 것보다 조금 더 복잡합니다. tmux는 창의 테두리, 상태바, 메시지 등 여러 요소의 외형을 세세하게 조정할 수 있거든요. 단순하게 하려면 몇 개 옵션만 추가하면 되지만, 정교한 스타일을 원한다면 더 많은 설정이 필요합니다. 얼마나 꾸밀지는 당신이 결정하면 됩니다. tmux의 man 페이지(특히 status-style, pane-border-style 등)를 자세히 읽어보면 도움이 될 거예요.