Tmux

2020년 7월 15일 수정

Tmux 는 터미널 멀티플렉서라고 불리는 도구다. 쉽게 말해서 하나의 터미널을 여러 개로 나누어서 쓸 수 있게 만들어 준다. 현대적인 터미널의 멀티 탭이나 멀티 Pane 기능과 비슷한 기능을 터미널 안에서 구현하기도 한다.

비슷하면서도 원조 격인 screen 이라는 도구에 영향을 많이 받은 것으로 보인다.

사용법

별 다른 인자 없이 그냥 실행시키면 실행된다.

tmux

실행된 상태에서 detach, 즉 tmux를 백그라운드 상태로 두려면 아래 단축키 항목에서 백그라운드로 돌리기 항목을 참조하거나, 혹은 tmux 내부의 셸에서 아래 커맨드를 입력하면 된다.

tmux detach

detach 상태 즉 백그라운드 상태에 있는 tmux 에서 구동 중인 은 터미널이 종료되어도 계속 돌아간다. 개발 중인 서버 프로세스를 테스트 할 때 편하다.

백그라운드에 있는 tmux 세션을 포그라운드로 돌리려면 아래 커맨드를 입력하면 된다.

tmux attach

이렇게 하면 해당 세션이 다시 뜬다.

설정 방법

~/.tmux.conf 파일에 원하는 설정을 기록할 수 있다.

리더 키(Prefix) 변경하기

기본 리더 키는 ^b (Ctrl-B)로 설정되어 있다. 이걸 바꾸려면, 예를 들어 리더 키를 ^\ 로 바꾸려면 아래의 설정을 추가하면 된다.

unbind-key C-b
set-option -g prefix C-'\'

Emacs 등을 같이 쓰는 경우 기본 리더 키인 ^b 가 중복되기 때문에 이런 식으로 잘 안 쓰이는 키로 바꾸는 것을 추천한다.

리더 키는 대안 리더 키(alternative, prefix2)도 지원된다. 기본 대안 리더 키는 ^a 가 기본 설정이다. 이것 역시 비슷하게 바꿀 수 있다.

unbind-key C-a
set-option -g prefix2 C-']'

단축키

아래에 언급하는 모든 단축키는 리더 키(Prefix)를 먼저 누른 후 눌러야 한다. 참고로 리더 키는 앞서 언급한 대로 사용자가 커스터마이징 할 수 있으며 기본 설정은 ^B (Ctrl-B)다.

c
새 창 만들기(New window)
1
1번 윈도우로 전환(Switch to window 1). 이런 식으로 1에서 9번까지 쓸 수 있다.
%
창을 좌우로 분할(Horizontal split pane)
"
창을 위아래로 분할(Vertical split pane)
q 1
창의 나눠 진 부분에서 1번 pane으로 이동하기(Switch pane number 1). q 를 누르면 화면에 숫자가 표시되니 원하는 숫자를 누르면 이동한다.
o
다른 창으로 포커스 이동
h 혹은 j 혹은 k 혹은 r 혹은 커서 이동키
해당 방향의 pane으로 이동한다. hjklVim 의 커서 이동키와 동일한 배치다. 이 외에 방향키를 사용해도 동일하게 동작한다.
[
스크롤 모드. 커서 이동키로 스크롤을 할 수 있다. 빠져나올 때는 RET (Enter) 키를 누르면 된다.
d
백그라운드로 돌리기(detach)
M-1
모든 Pane의 넓이(width) 통일시키기
M-2
모든 Pane의 높이(height) 통일시키기

M-1 처럼 M 키 조합 단축키는 윈도의 경우 Alt키를 같이 누르라는 의미다. macOS의 iTerm2의 경우 Profile - Keys 항목에서 Option 키를 Meta에 바인딩 시킬 수 있으므로 만약 M- 단축키가 통하지 않는다면 설정을 수정해보자.

기타 팁

선택 영역 복사하기

마우스로 드래그 해서 ^C 혹은 Command-C 를 눌렀는데 복사가 안 된다면 ^W (Ctrl+W)를 눌러보자. 물론 설정에 따라 터미널에서 복사가 안 될 수도 있다.

macOS 유저라면 🌏reattach-to-user-namespace 라는 도구를 설치하고 설정해야 할 수도 있다.

종료하지 않고 설정 다시 읽어 들이기

tmux를 종료하지 않고 바꾼 설정을 적용하고 싶다면 리더 키(Prefix)를 누르고 아래 커맨드를 입력해 보자.

:source-file ~/.tmux.conf

: 키를 누르는 순간 마치 Vim 처럼 하단에 입력 모드가 생기면서 저렇게 입력이 된다. 그리고 엔터를 누르면 tmux가 설정 파일을 다시 읽어 들인다.

혹은 다른 방법으로 tmux 안에 아무 에서 아래 커맨드를 입력해 보자.

tmux source-file ~/.tmux.conf

이렇게 해도 tmux를 종료하지 않고 설정 파일을 다시 읽어 들일 수 있다.

외부 링크