# List of plugins set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' # other plugins ... # Initialize TMUX plugin manager # (keep this line at the very bottom of tmux.conf) run '~/.tmux/plugins/tpm/tpm'
tmux 세션을 만들고, 세션에서 window를 구성하고, window 안에 pane에 대해서 요약
새로운 세션 시작하기
1 2
$ tmux #새로운 새션 $ tmux new -s session_name #session_name으로 새로운 세션
세션을 dettach하면 세션은 저장된다. 사용하지 않으면 kill로 종료한다.
세션 이용하기
1 2 3
$ tmux ls $ tmux list-session $ tmux list-windows # Window 목록
열린 세션에 붙기.
세션 번호중 낮은 번호에 우선해서 접속한다.
1 2 3
$ tmux attach $ tmux at $ tmux a
특정 세션에 접속하기
세션 번호 혹은 이름으로 접속한다.
1
$ tmux a -t session_name
세션 마감하기
1
$ tmux kill-session session_name
Tmux pane
Tmux로 접속한 session은 처음 한개의 Window를 갖는다. window 안에서 session, window, pane을 관리한다. 각 윈도우는 한 개 이상의 Pane 구획으로 나누어 사용할 수 있다.
Tmux window를 여러 분할면 pane으로 나눠 사용한다.
1 2 3 4 5 6 7 8 9 10 11
C-% # 수직으로 나누기 C-" # 수평으로 나누기 C-z # 현재 pane 확대 및 돌아오기 C-{ # 현재 pane을 이전 pane 위치로 이동 C-} # 현재 pane을 다음 pane 위치로 이동 C-Arrow # 앞,뒤 pane을 방향키로 이동 C-M+Arrow # pane 크기를 방향키에 따라 변경 C-spacebar # pane 방향 전환 (수직<->수평) C-! # 현재 pane을 새 window로 분리 C-x # 현재 pane을 종료 C-[ # pane에서 스크롤 기능을 활성화
Tmux copy & paste
tmux 는 자체 버퍼에 터미널에서 선택한 영역의 텍스트를 복사해서 사용할 수 있다.
1 2 3 4
C-[ # copy mode Ctrl+space # 복사할 영역을 선택한다. 터미널에 영역이 선택되어 보인다. Ctrl+w # 선택한 영역을 복사한다. C-] # 붙여 넣는다.
Tmux Window
현재 세션 이용
1 2
C-s #Session 목록 C-$ #Session 이름 변경
세션에서 여러 윈도우를 추가 해서 사용할 수 있다.
1
C-c #새로운 윈도우 생성
여러 윈도우는 윈도우 순서에 따라 현재 윈도우 화면을 교환 할 수 있다.
1 2 3 4 5 6 7
C-w #윈도우 목록 C-1 ... #지정 윈도우 번호로 전환: 0,1,... C-p #이전 윈도우로 이동 C-n #다음 윈도우로 이동 C-l #가장 마지막 윈도우로 이동 C-, #현재 윈도우 이름 변경 C-& #현재 윈도우 제거
현재 세션에서 나온다. 세션은 백그라운드에서 실행된다.
1 2
C-d #현재 세션을 빠져 나온다 (detach) C-D #빠져나올 세션을 선택할 수 있다.
detach 는 외부 터미널에서 tmux detach 를 실행하면 현재 tmux 세션이 분리된다.
Session transition
Tmux window 상태에서 여러 세션 사이의 전환 단축키;
1 2 3 4 5
C-$ # 현재 세션 이름 바꾸기 C-( # 이전 세션으로 전환 C-) # 다음 세션으로 전환 C-L # 사용한 세션중 마지막 세션으로 전환 C-s # 사용 가능한 세션 목록
단, 시스템 버퍼는 별도의 플러그인을 사용한다.
재미있는 설정
마우스 모드 활성화
설정에 mouse mode 활성화를 .tmux.conf 설정으로 지정.
1
set -g mouse on
설정을 탑재하면 1. 마우스 드래그로 선택한 버퍼 복사 2. Shift 마우스 드래그로 일반 Copy 수행.
버퍼 크기
1 2
# scrollback buffer size increase set -g history-limit 100000
Pane 이동
M 와 방향키로 바인딩해서 prefix 없이 사용.
1 2 3 4 5
# Use Alt-arrow keys without prefix key to switch panes 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
상태바 컬러
1 2 3
# bar color set -g status-bg black set -g status-fg white
$ tmux # 세션을 시작하고 참가한다. $ tmux new -s foo # 세션 foo를 시작하고 참가한다
세션에 참가하면 하나 혹은 그 이상의 윈도우에서 Pane을 배치해 사용할 수 있다.
[그림. Tmux window layout]
Control와 Meta key
Tmux 세션 참가후 Window에서는 Prefix key로 Session, Window, Pane 관련 명령을 키로 조합해 사용한다. 기본 Prefix key는 Control+b key고 옵션으로 사용하는 Meta key는 Alt 키 이다.
여기서 Prefix key는 C와 조합으로 표기하고, Meta key인 Alt는 M으로 표기한다.
윈도우 명령 control, meta 키 조합과 병행해 윈도우에서 명령모드를 사용할 수 있다. 명령모드는 C-: 키로 시작하고, 명령모드에서 명령 자동 완성을 지원한다.
[그림. Window command mode]
Pane 다루기
윈도우는 수직/수평으로 구획을 나눌수 있다. C-“ 키로 현재 Pane 아래에 수평으로 새 Pane을 나눈다. 그리고 **C-%**키로 수직으로 새 Pane을 나눌 수 있다.
[그림. Tmux Window Pane]
C-q : pane 번호를 표시하고 번호를 눌러서 이동
C-o : pane을 순서대로 이동
C-방향키 : 해당 방향으로 이동
C-M-방향키 : 해당 방향으로 크기 조절
C-M-1~5 : 몇 가지 미리 설정된 레이아웃을 고를 수 있고, prefix space로 이 레이아웃을 순서대로 - 돌아가며 선택 가능
C-z : 특정화면만 확대하기 다시 예전 Panes상태로 돌아오기
Pane을 지우려면 터미널 exit 명령 혹은 C-x 키로 빠져 나올 수 있다.
Window 다루기
윈도우는 명령모드에서 new-window 혹은 C-c 키로 새 윈도우를 추가할 수 있다.
[그림. new Window ]
윈도우 사이의 이동은 윈도우 번호에 따라 단축키 C-0,1,2…9를 사용하거나 C-w로 윈도우 목록에서 선택해 이동할 수 있다.
C-n, C-p : 다음 윈도우, 이전 윈도우로 이동
C-l : 직전 사용하던 윈도우로 이동
C-w : 윈도우 리스트를 띄우고 선택
C-, : 윈도우 이름 바꾸기
세션 사용중에 세션을 빠져 나오려면 C-d 로 detach 하거나, 명령모드 C-:에서 detach 명령을 준다.
복사와 스크롤
Tmux 화면 버퍼는 한 화면분 밖에 안되서, 이전 화면 내용을 보려면 스크롤 기능을 켜야 한다. C+[ 키는 스크롤 키고, 우측상단에 페이지 표시가 나타난다. 키보드 방향키나 Page Up/Down키로 스크롤이 가능하다.
세션 연결
세션은 하나 혹은 그 이상 만들고 attach 명령으로 세션에 참가할 수 있다.
1 2 3 4
$ tmux new -s foo -d # 세션 foo를 시작하고 빠져나온다. $ tmux ls # 세션 목록을 출력한다. 0: 1 windows (created Fri May 12 10:26:00 2017) [80x24] (attached) foo: 1 windows (created Fri May 12 10:34:18 2017) [80x24]
터미널에서 세션에 참가하려면 attach 명령과 대상 세션을 지정해 준다. 대상 세션은 tmux ls 명령에 표시되는 세션번호 혹은 세션이름을 지정한다.
set -g @plugin 'tmux-plugins/tmux-resurrect' set -g @plugin 'tmux-plugins/tmux-continuum'
tmux 에서 플러그인 설치를 위해서 C-I (대문자) 를 실행
그리고 .tmux.conf 파일에 continuum-restore 을 on으로 해준다.
1
set -g @continuum-restore 'on'
tmux 세션을 모두 나와서 tmux 서버를 모두 kill-session 같은 명령으로 종료시킨후 tmux를 다시 시작하면 .tmux/resurrect 에 저장된 마지막 세션이 복구되는 것을 확인할 수 있다.
이제부터 15분 마다 자동 저장하고 서버를 재시작한 후에 tmux를 다시 시작하면 저장한 환경을 자동으로 복구해 준다.
tmux status 표시
tmux-continuum 의 상태를 tmux status line에 표시할 수 있다.
1
set -g status-right 'Continuum status: #{continuum_status}'
Linux에서 tmux 자동 시작
tmux-continuum 은 Linux systemd, macOS 에서 자동 시작을 지원한다.
Linux는 .tmux.conf 파일에 다음 부트 옵션을 추가한다.
1
set -g @continuum-boot 'on'
그리고 현재 실행중인 세션에 변경한 설정을 적용하려면
1
$ tmux source-file ~/.tmux.conf
macOS에서 tmux 자동 시작
.tmux.conf 파일에 다음 부트 옵션을 추가한다.
1
set -g @continuum-boot 'on'
그리고 현재 실행중인 세션에 변경한 설정을 적용한다.
1
$ tmux source-file ~/.tmux.conf
맥이 재시작 하면 자동으로 Terminal.app 이 실행된다. 터미널 크기는 다음 옵션으로 지정한다:
1 2 3 4
set -g @continuum-boot-options 'fullscreen'# terminal window will go fullscreen set -g @continuum-boot-options 'iterm'# start iTerm instead of Terminal.app set -g @continuum-boot-options 'iterm,fullscreen'# start iTerm in fullscreen
다중 tmux 서버는 지원하지 않는다.
tmux 로 서버를 하나 시작하고, tmux -S /tmp/foo 같이 다른 소켓을 사용했다고 자동 저장/복구가 별도로 진행되지 않는다. [^10]