tmux는 입력하는 내용을 현재 열린 모든 pane에 전달하는 기능을 제공한다. 여러 위치에 있는 내용에 대해서 동일한 작업을 수행해야 하는 경우에 유용하게 사용할 수 있다. 이전부터 기능이 있다는 점은 알고 있었는데 딱히 사용할 일이 없다가 최근 장애 대응 중에 유용하게 사용해서 기록 해둔다.

tmux 창에서 pane을 열고 다음과 같이 입력한다. on이나 off를 지정하지 않으면 현재 설정과 반대로 토글한다.

<Ctrl-B>, :
setw synchronize-panes on

설정을 켠 다음에 입력하면 현재 창에 열린 모든 pane에 동시에 입력되는 것을 확인할 수 있다.

자주 사용한다면 단축키로 저장해둘 수 있다. .tmux.conf에 다음처럼 설정을 추가한다.

bind-key y set-window-option synchronize-panes

이제 <Ctrl-B>, y로 간편하게 사용할 수 있다.

최근에 구입한 Dell 노트북에 조금이라도 가볍게 사용해보려고 Lubuntu를 설치해서 사용하고 있다. 트랙패드가 예전에 비해 많이 나아지긴 했지만 아무래도 맥북에서 사용하던 것과는 많이 달라서 좀 더 키보드 친화적인 환경을 꾸려야겠다는 생각이 들었다. 그러던 중 tmux와 다시 친해질 기회인 것 같아서 tmux를 설치하게 되었다.

어제 tmux 이야기를 트위터에 올렸더니 ujuc님이 powerline이란 멋진 tmux 플러그인을 소개해주시고, 사용하는 rc 파일을 공유해주셨다.

만약 tmux 플러그인에 관심이 있다면 이 페이지가 도움이 된다.

그 외에도 간단하게 설치할 수 있는 것도 많이 보였다.

구글 검색해보면 이것저것 유용한 도구가 많이 나온다.

tmux 설정 되돌리기

tmux.conf 재미있는 점이 default 파일이 존재하지 않는다는 점이다. 설정 하나를 변경하면 기존 설정을 알지 못하는 이상 다시 기본 설정으로 돌아갈 수가 없다. 그 눈 아픈 기본값 초록색 상태 막대로 한번에 돌아갈 방법이 없다는 뜻이다.

그래서 tmux 기본 설정을 어딘가 추출해서 보관해두면 다시 돌아오는데 편리하다. 현재 tmux에 설정된 값은 다음 명령어로 추출할 수 있다.

$ tmux show -g | sed 's/^/set-option -g /' > ~/.tmux.current.conf

구글링 해보면 멋지게 꾸며진 tmux.conf를 많이 볼 수 있다. 나처럼 설정을 잘 모르고 적용했다가 명령을 시작하기 위해 사용하는 프리픽스인 Ctrl + b를 이상한걸로 변경해서 종료도 못하고 오고가도 못하는 상황을 마주할 수도 있으니 꼭 기본 설정을 추출해두자.

tmux.conf를 적용하는 명령은 source-file이다.

$ tmux source-file ~/.tmux.current.conf

직접 설정 변경하기

내 경우는 터미널 폰트를 비트맵으로 사용하고 있어 앞서 powerline을 적용하니 대다수가 깨져 이쁘게 적용되질 않았다. 게다가 사양 탓인지 좀 느려지는 기분이라서 간단하게 색상 바꾸고 필요한 것만 설치하기로 했다.

tmux에서 가장 필요했던 부분은 배터리 잔량 표시와 일자/시간 표시였다. 일자/시간은 기본적으로 가능한 부분이라 배터리 잔량 표시는 다음 프로그램을 설치했다.

아쉽게도 잔량 표시 그림은 그려지지 않지만 수치가 나오니 그럭저럭 만족하고 있다.

기분 전환 겸 상태 막대 색상도 초록에서 연한 회색(colour235)로 변경했다. 사용할 수 있는 색상은 다음 스크립트로 확인할 수 있다.

for i in {0..255} ; do
    printf "\x1b[38;5;${i}mcolour${i}\n"
done

누가 이 결과를 보기 좋게 github에 올려뒀다.

원하는 색상이 나오지 않을 때

이 색상 설정은 256color 모드로 실행하지 않은 터미널에서는 동작하지 않는다. 색상이 적용되지 않는다면 다음 설정을 참고하자.

# .bashrc or .zshrc 에 추가
export TERM=xterm-256color
alias tmux="tmux -2"

# .tmux.conf 에 추가
set -g default-terminal "screen-256color"

OS X의 터미널은 기본적으로 256color로 설정되어 있다.


tmux의 기본적인 기능은 예전 요약했던 내용이나 nanhapark님의 포스트를 참고하면 되겠다. 물론 이런 요약본도 tmux.conf 한방에 모두 변경될 수 있어서 tmux.conf를 조심하자는 이상한 결론을 내려본다.

tmux를 어디선가 보고 엄청 멋지다 싶어서 검색했더니 @nanhapark님이 재미있게 정리한 글이 있어서 편하게 볼 수 있었다. 읽은 글들은 다음 목록에서 확인할 수 있고, 읽으며 요약해 정리했다. (nodeqa.com에 해당 글이 있었는데 사이트가 더이상 운영되지 않아 링크를 제거했다.)

tmux 설치하기

맥에서는 brew로 설치 가능

$ brew install tmux

tmux 구성

  • session : tmux 실행 단위. 여러개의 window로 구성.
  • window : 터미널 화면. 세션 내에서 탭처럼 사용할 수 있음.
  • pane : 하나의 window 내에서 화면 분할.
  • status bar : 화면 아래 표시되는 상태 막대.

명령어 정리

tmux는 prefix 키인 ctrl+b를 누른 후 다음 명령 키를 눌러야 동작할 수 있다. 다음 내용에서 ctrl + b, 어쩌고 내용이 있다면 tmux 내에서 쓸 수 있는 단축키다.

ctrl + b, <key>

일부 직접 명령어를 입력해야 할 때는 명령어 모드로 진입해야 한다. 명령어 모드의 key는 :다.

ctrl + b, :

세션 관련

# 새 세션 생성
$ tmux new -s <session-name>

# 세션 이름 수정
ctrl + b, $

# 세션 종료
$ (tmux에서) exit

# 세션 중단하기 (detached)
ctrl + b, d

# 세션 목록 보기 (list-session)
$ tmux ls

# 세션 다시 시작
$ tmux attach -t <session-number or session-name>

윈도우 관련

# 새 윈도우 생성
ctrl + b, c

# 세션 생성시 윈도우랑 같이 생성
$ tmux new -s <session-name> -n <window-name>

# 윈도우 이름 수정
ctrl + b, ,

# 윈도우 종료
ctrl + b, &
ctrl + d

# 윈도우 이동
ctrl + b, 0-9 : window number
            n : next window
            p : prev window
            l : last window
            w : window selector
            f : find by name

틀 pane 관련

# 틀 나누기
ctrl + b, % : 횡 분할
          " : 종 분할

# 틀 이동
ctrl + b, q 그리고 화면에 나오는 숫자키
ctrl + b, o : 순서대로 이동
ctrl + b, arrow : 방향키로 숑숑

# 틀 삭제
ctrl + b, x
ctrl + d

# 틀 사이즈 조절
(ctrl + b, :)
resize-pane -L 10
            -R 10
            -D 10
            -U 10

# 틀 레이아웃 변경
ctrl + b, spacebar

단축키 관련

# 단축키 목록
ctrl + b, ?

# 키 연결 및 해제 bind and unbind
(ctrl + b, :)
bind-key [-cnr] [-t key-table] key command [arguments]
unbind-key [-acn] [t key-table] key

# 옵션 설정 `set` and `setw`
set -g <option-name> <option-value>  : set-option
setw -g <option-name> <option-value> : set-window-option

copy mode 1

copy mode에서는 콘솔을 스크롤 하거나 내용을 복사하는 등의 기능을 할 수 있다.

# copy mode 진입
ctrl + b, [

# 빠져나오기
(copy mode에서) q or ESC

# 이동
arrow : 커서 이동
pageUp, pageDown : 페이지 이동 (iTerm에서는 fn + up, down, terminal에서는 alt + up, down)

설정 저장하기 tmux.conf

~/.tmux.conf 파일을 생성해 설정을 저장해두면 시작할 때 자동으로 설정을 불러온다. 컬러 설정, 마우스 설정


이것저것 해보다 알게 된건데 iTerm에서 tmux로 만든 세션을 다른 terminal에서 접속하면 동시에 동작한다.

뭐야 무서워…

  • 내 터미널 설정이 이상해서 그런지 설명대로 동작하질 않는다. 
  • 색상을 바꿔요

    눈에 편한 색상을 골라보세요 :)

    Darkreader 플러그인으로 선택한 색상이 제대로 표시되지 않을 수 있습니다.