Tmux는 터미널의 화면 분할을 도와주는 툴이다.
그 외에도 Tmux의 중요한 기능이 있는데, 내가 터미널의 접속을 끊어도 tmux는 뒤에서 돌고 있게 할 수 있다. 그래서 오늘하던 작업을 다음날에 이어서 할 수 있다.
별도의 tmux 세션을 열고 거기 안에서 화면을 분할 (pane) 하여 사용 하거나 탭을 여러개 (window) 를 만들어 사용 할 수 있다. 그리고 터미널 프로그램이 종료 되더라도 기존 작업을 이어서 계속 할 수 있도록 해 준다. 오늘 하던 작업을 내일 이어서 할 수 있다.
Tmux는 Session
, Window
, Pane
세 가지 인터페이스로 구분된다.
Session
은 독립된 작업공간 제공Window
는 화면 전환효과를 제공Pane
은 화면을 분리하는 효과 제공, Pane
이 우리에게 주로 필요한 기능이다!
사진출처 : https://snipcademy.com/linux-command-line-tmux
sudo apt-get install tmux
tmux
Tmux를 사용하기 전 여러 가지 설정을 바꿔주는 게 편하다.
Tmux 설정은 ~/.tmux.conf
에 기록한다. ~/.tmux.conf
로 파일을 생성해서 아래 내용을 저장하자. (나의 경우 터미널에서 바로 vim을 열어서 작성하였다.)
vim ~/.tmux.conf
블로그1와 블로그2를 참고해서 설정 파일을 작성하였다.
그대로 카피해도 좋고, 아래에 각 설정이 무엇을 의미하는지 설명해놨으니 자신의 입맛에 맞게 수정해서 사용하면 된다.
# 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 %
# 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
# Enable mouse control (clickable windows, panes, resizable panes)
set -g mouse on
파일 저장을 했으면 쉘에서
tmux source-file ~/.tmux.conf
명령어를 실행하면 적용된다.
Tmux에서는 Prefix key인 ctrl+b
를 누른 후 다음 명령 키를 눌러야 동작할 수 있다.
하지만 나의 경우 손이 작아서인지 ctrl+b
를 누르기가 매우 불편하다.
ctrl+a
로 Prefix key 설정을 바꿔보자
# remap prefix from 'C-b' to 'C-a'
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
이제 ctrl+a
가 prefix key
라고 가정하고 설명을 작성하겠다.
원래 pane 가로, 세로 나누기 명령어는 각각 %
,"
인데 직관적으로 |
, _
로 바꾸는 작업이다.
# split panes using | and -
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %
pane 간 이동으로 정말 많이 사용하는 작업 중 하나이다. alt+방향키
조합으로 pane을 간단히 이동할 수 있다.
원래는 ctrl+a
를 눌렀다 뗀 뒤 방향키를 눌러주면 되지만 이게 쓰다보면 눌렀다 떼는 것조차 귀찮기 때문에 이 설정을 해준다.
# 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
이 설정을 하면 vim을 켰을 때 스크롤이 안 되서 현재는 사용하지 않고 있다. 대신
ctrl+a
,[
로 스크롤 모드를 사용할 수 있다.
기본 Tmux 모드에서 마우스로 다른 창 클릭도 안 되고, pane 사이즈 조절도 안 되고, 심지어 스크롤도 안 된다.. 이걸 가능하게 해주는 설정이다!
# Enable mouse control (clickable windows, panes, resizable panes)
set -g mouse on
pane 가로 나누기 : ctrl+a
, -
pane 세로 나누기 : ctrl+a
, |
pane 간 이동하기 : alt + 방향키
pane 삭제하기 : ctrl+d
pane 크기 조절 : ctrl+a
누른 상태에서 방향키
window 생성하기 : ctrl+a
, c
window 삭제하기 : ctrl+d
window 이동하기 : ctrl+a
, 0-9
(window number)
n
(next window)
p
(prev window)
스크롤 모드 : ctrl+a
,[
참고사이트
https://edykim.com/ko/post/tmux-introductory-series-summary/
https://namj.be/2020-03-15-tmux/2020-03-15-tmux/