공식 홈페이지 http://tmux.sourceforge.net/
# Ubuntu 에서 설치
sudo apt-get install tmux
# CentOS 에서 설치
sudo yum install tmux
# MacOS 에서 설치
brew install tmux
#####
# tmux 명령어/단축키
tmux -V # 버전, 버전에 따라 명령이 조금 달라질 수 있다.
tmux # 실행(새로운 세션으로 터미널 열림)
tmux new-session # 실행(새로운 세션으로 터미널 열림)
tmux list-commands # tmux 명령어 보기
tmux ls # 열려 있는 세션 리스트
tmux kill-server # 모든 세션(tabs,pane)종료
tmux list-windows # tab(window) 리스트
tmux list-panes # pane 리스트
tmux a # 세션 붙이기(attach)
# 수직분할 후 수평분할된 3개의 pane 을 가진 세션 시작
tmux new-session \; \
split-window -v \; \
split-window -h \;
attach
tmux new-session \; \
split-window -v \; \
split-window -h \;
attach
# 기본 prefix(ctrl+b) 대신 ctrl+a 사용하기
#set -g prefix C-a
#bind C-a send-prefix
#unbind C-b
#set -g prefix C-a
#bind C-a send-prefix
#unbind C-b
ctrl+b ? # 설정된 단축키 보기
ctrl+b : # 명령 프롬프트 사용
ctrl+b t # 현재 시간 보기
ctrl+b t # 현재 시간 보기
ctrl+b s # session 리스트 보기 및 선택(enter), x 는 세션 삭제
ctrl+b c # 새 window(tab) 생성
ctrl+b w # window(tab) 리스트 보기 및 선택(enter), x 는 윈도우 삭제
ctrl+b n # 다음 tab 이동
ctrl+b p # 이전 tab 이동
ctrl+b f # tab 찾기
ctrl+b 번호 # tab 로 이동
ctrl+b , # 현재 tab 이름 변경
ctrl+b & 또는 exit # 현재 tab 종료
ctrl+b d # 세션 떼기(detach)
ctrl+b p # 이전 tab 이동
ctrl+b f # tab 찾기
ctrl+b 번호 # tab 로 이동
ctrl+b , # 현재 tab 이름 변경
ctrl+b & 또는 exit # 현재 tab 종료
ctrl+b d # 세션 떼기(detach)
ctrl+b % # 수직으로 pane 나누기
ctrl+b " # 수평으로 pane 나누기
ctrl+b " # 수평으로 pane 나누기
ctrl+b ! # 현재 pane 떼서 new tab 으로 이동시키기
ctrl+b q 번호선택 # pane 번호 보기 및 번호로 pane 선택
ctrl+b 방향키 # pane 이동(ctrl+b 후 방향키로 계속 이동 가능)
ctrl+b spacebar # pane 레이아웃 변경
ctrl+b alt+방향키 # pane 크기 변경
ctrl+b x 또는 exit # 현재 pane 종료
ctrl+b q 번호선택 # pane 번호 보기 및 번호로 pane 선택
ctrl+b 방향키 # pane 이동(ctrl+b 후 방향키로 계속 이동 가능)
ctrl+b spacebar # pane 레이아웃 변경
ctrl+b alt+방향키 # pane 크기 변경
ctrl+b x 또는 exit # 현재 pane 종료
ctrl+b m 현재 pane mark/unmark
ctrl+b { 현재 선택한 pane 과 위쪽 pane 위치 교환
ctrl+b { 현재 선택한 pane 과 위쪽 pane 위치 교환
ctrl+b } 현재 선택한 pane 과 아래쪽 pane 위치 교환
# copy & paste
# setw -g mode-keys vi 로 vi 단축키를 활성화 선행
ctrl+b [ # copy mode 시작
spacebar # 블럭지정 시작, 방향키로 복사할 블럭 지정
enter # 복사
#####
# tmux 시작시 로딩되는 설정파일
# 명령 프롬프트로에서도 사용
vi ~/.tmux.conf
# -g global option
set -g display-panes-time 5000 # 5초 동안 pane 숫자 보이기
# 마우스 사용 활성화
# tmux 1.9 이전
#set -g mode-mouse on
#set -g mouse-resize-pane on
#set -g mouse-select-pane on
#set -g mouse-select-window on
# tmux 1.9 이후
set -g mouse on
# setw -> set window
setw -g mode-keys vi # vi 단축키 사용(디폴트는 emacs)
#setw synchronize-pane on # 모든 panes 에 동시 입력 활성화
#setw synchronize-pane off # 모든 panes 에 동시 입력 해제
# tab_mode 커스텀 모드 생성
# tab_mode 에서 s 동시 입력 활성/비활성화 토글
# 별도 설정 파일 읽기
# source-file ~/workspace/a/a.conf;
# 별도 설정 파일이 존재하면 읽기
if-shell "test -f ~/workspace/a/a.conf" "source ~/workspace/a/a.conf"
# tmux 다시 읽기
# display-message (alias: display) 상태바에 메시지 출력 -p 사용하면 stdout에 출력
bind r source-file ~/.tmux.conf \; display "ysoftman ~/.tmux.conf loaded"
# 현재 바인딩되 있는 모든 단축키 확인
# copy & paste
# setw -g mode-keys vi 로 vi 단축키를 활성화 선행
ctrl+b [ # copy mode 시작
spacebar # 블럭지정 시작, 방향키로 복사할 블럭 지정
enter # 복사
ctrl+b ] # 붙이기
# find
# find
ctrl+b [ # copy mode 시작
/ # 찾을 문자 입력, vi 찾기와 같음
#####
# tmux 시작시 로딩되는 설정파일
# 명령 프롬프트로에서도 사용
vi ~/.tmux.conf
# -g global option
set -g display-panes-time 5000 # 5초 동안 pane 숫자 보이기
# 마우스 사용 활성화
# tmux 1.9 이전
#set -g mode-mouse on
#set -g mouse-resize-pane on
#set -g mouse-select-pane on
#set -g mouse-select-window on
# tmux 1.9 이후
set -g mouse on
# setw -> set window
setw -g mode-keys vi # vi 단축키 사용(디폴트는 emacs)
#setw synchronize-pane on # 모든 panes 에 동시 입력 활성화
#setw synchronize-pane off # 모든 panes 에 동시 입력 해제
# tab_mode 커스텀 모드 생성
bind -n C-t switch-client -T tab_mode \; refresh-client -S
bind -T tab_mode C-t switch-client -T root
# pane_mode 커스텀 모드 생성
bind -n C-p switch-client -T pane_mode \; refresh-client -S
bind -T pane_mode C-p switch-client -T root
# move_mode 커스텀 모드 생성
bind -n C-h switch-client -T move_mode \; refresh-client -S
bind -T move_mode C-h switch-client -T root
# resize_mode 커스텀 모드 생성
bind -n C-n switch-client -T resize_mode \; refresh-client -S
bind -T resize_mode C-n switch-client -T root
bind -T tab_mode s setw synchronize-panes \; display "sync-panes: #{?synchronize-panes,ON,OFF}" \; switch-client -T tab_mode
# pane_mode 에서 s 동시 입력 활성/비활성화 토글
bind -T pane_mode s setw synchronize-panes \; display "sync-panes: #{?synchronize-panes,ON,OFF}" \; switch-client -T pane_mode
# 데모 메뉴 (C-p D): 9분할 생성(s), 데모 명령 실행(d)
# 9분할: 현재 창을 계속 split-window 하면 공간이 없다는 에러 발생하므로
# select-pane 으로 활성 창을 옮겨가며 분할해야 한다.
# 데모 명령 실행은 9분할 후 쉘 프롬프트가 뜨고난 뒤 사용.
bind -T pane_mode D display-menu -T "데모" \
"9분할 tiled" s {
split-window -v
split-window -v
split-window -v
split-window -v
select-pane -t 1
split-window -h
split-window -h
split-window -h
split-window -h
select-layout tiled
} \
"9분할 tiled 에서 명령 실행" d {
select-pane -t 1
send-keys 'echo ysoftman1' Enter
send-keys 'cmatrix' enter
select-pane -t 2
send-keys 'echo ysoftman2; fd . /usr | xargs hexdump -C' enter
select-pane -t 3
send-keys 'echo ysoftman3; rg -i if /usr' enter
select-pane -t 4
send-keys 'echo ysoftman4; \sl -a; wtfutil' enter
select-pane -t 5
send-keys 'echo ysoftman5; cacafire' enter
select-pane -t 6
send-keys 'echo ysoftman6; htop' enter
select-pane -t 7
send-keys 'echo ysoftman7; infinite_cowsay' enter
select-pane -t 8
send-keys 'echo ysoftman8; asciiquarium' enter
select-pane -t 9
send-keys 'echo ysoftman9; for ((;;)); do imgcat ${myenv_path}/xelloss.jpg; sleep 1; done' enter
}
# source-file ~/workspace/a/a.conf;
# 별도 설정 파일이 존재하면 읽기
if-shell "test -f ~/workspace/a/a.conf" "source ~/workspace/a/a.conf"
# tmux 다시 읽기
# display-message (alias: display) 상태바에 메시지 출력 -p 사용하면 stdout에 출력
bind r source-file ~/.tmux.conf \; display "ysoftman ~/.tmux.conf loaded"
# 현재 바인딩되 있는 모든 단축키 확인
tmux list-keys

comments:
댓글 쓰기