본문 바로가기

Software

tmux 다중터미널 프로그램 사용법 설명 및 환경설정

1 Introduction

본 포스트에서는 리눅스의 다중터미널 프로그램 tmux의 사용법에 대해 설명한다. 포스트에서 설명하는 모든 내용들은 우분투 18.04 LTS 환경에서 테스트하였다.

필자가 생각하는 tmux의 장점은 다음과 같다.

  • 한 프로그램에 여러 개의 터미널을 동시에 띄워놓은 상태로 빠르게 네비게이션하면서 코딩이 가능하다
  • 터미널 작업 도중 detatch하면 백그라운드에서 계속 프로그램이 실행되고 있기 때문에 내가 했던 작업 환경을 나중에 원할 때 attatch해서 그대로 사용할 수 있다
  • 원격에서 리눅스로 ssh 접속을 한 상태로 작업을 할 때, tmux를 사용하면 접속이 끊어지더라도 백그라운드에서 원하는 작업을 계속 실행할 수 있다
  • 원격에서 작업한 tmux 세션을 로컬에서도 접속할 수 있고 반대도 가능하다

tmux의 환경설정 파일은 아래에서 다운로드받을 수 있다.

tmux_conf
0.00MB

추가적으로 터미널 하단의 상태창에 화살표(<, >)와 같은 시각적 효과를 주기 위해 Powerline 이라는 폰트를 사용하였다. 다음 섹션에서 Powerline 폰트 설치법까지 같이 설명한다.

2 Environment setup

터미널을 연 다음 아래 명령어로 tmux을 설치한다.

# Install tmux
  $ sudo apt install tmux

다음으로 위 링크에서 tmux 환경설정 파일을 받은 후 홈폴더로 이동시킨다. 이 때, 환경설정 파일의 이름 앞에 점(.)이 들어가야 정상적으로 tmux에서 인식한다.

# Move .tmux.conf file to home folder.
  $ mv  ~/Downloads/tmux_conf  ~/.tmux.conf

2.1 Powerline font

해당 섹션에서는 tmux 하단의 상태창에 화살표 효과(<, >)를 나타내기 위해 Powerline 폰트를 설치하는 방법에 대해 설명한다. 만약 Powerline 폰트를 설치하고 싶지 않은 경우 .tmux.conf의 약 95번 라인부터 끝까지 Powerline 과 관련된 코드를 지우면 된다.

Powerline 폰트를 설치하기 위해 우선 fonts 레포를 다운로드받는다.

# Clone fonts repository.
$ git clone https://github.com/powerline/fonts

다음으로 fonts 폴더로 이동한 후 install.sh 스크립트를 실행시켜주면 설치된다.

# Change directory to fonts directory.
$ cd fonts/

# Install fonts.
$ ./install.sh

정상적으로 설치되었다면 터미널을 연 다음 Edit => Preference 창을 연 후 폰트를 Powerline 이름이 들어간 폰트로 변경한다. 만약 터미널 하단의 상태창을 파란색이 아닌 다른색으로 변경하고 싶다면 해당 링크에서 원하는 색상 파일을 클릭하고 .tmux.conf 파일의 95번째 라인부터 맨 끝까지 지운 후 붙여넣기하면 된다.

2.2 Terminal alias

해당 섹션에서는 필자가 tmux를 빠르게 사용하기 위해 .bashrc에 등록한 단축 명령어들을 소개한다. 아래 명령어들은 일일히 터미널에 타이밍해줘도 되지만 alias해서 사용하는 경우 더욱 빠르게 tmux를 사용할 수 있다. 해당 코드들은 ~/.bashrc 파일 맨 끝 부분에 붙여넣기하면 된다. 명령어들의 자세한 기능은 다음 섹션에서 설명한다.

# tmux 
alias tmux='TERM=xterm-256color tmux -2 -u'
alias tl='tmux ls'                    # session list
alias td='tmux detach'                # detatch session
alias tk='tmux kill-session -t '      # kill session
alias t4='tmux -u new-session -d    
tmux split-window -v
tmux split-window -h
tmux select-pane -U
tmux split-window -h
tmux select-pane -L
tmux attach-session -d'

# tmux function for attaching, switching, creating in one command.
function t() {
        if [ -z "$1" ]; then
                tmux
        elif [ -z ${TMUX} ]; then
                tmux attach -t $1
        else 
                tmux switch -t $1
        fi
}
# Copy above code to ~/.bashrc and exit.
$ vim ~/.bashrc

# Apply the change of .bashrc
$ source ~/.bashrc

3 How to use tmux

해당 섹션에서는 필자가 사용하는 tmux의 다양한 기능들에 대해 설명한다. 사용하는 .tmux.conf 파일은 tmux.conf 에서 다운로드 받을 수 있다. 해당 키바인딩은 필자가 임의로 설정한 키바인딩이므로 원한다면 얼마든지 바꿔서 사용할 수 있다.

단축키 설명에 앞서서 tmux의 기본 명칭에 대해 간단하게 알아보면 위와 같다. 그림과 같이 tmux는 세션(session), 윈도우(window), 페인(pane)과 같이 계층적인 구조로 되어있다.

3.1 Useful features

tmux의 명령을 사용하기 위해서는 Prefix키를 먼저 입력 후 명령어를 입력해야 하는데 해당 포스트에서는 Prefix 단축키를 에서 로 변경하였다. 즉, Prefix 기반의 tmux 명령어는 <...> 와 같이 실행할 수 있다. 창을 닫기 위해서는 키를 입력하면 된다. tmux에는 수많은 기능 및 키바인딩들이 존재하지만 이를 다 설명하지 않고 실제로 자주 사용하는 키바인딩 위주로 설명하였다.

Control 키바인딩은 <C-{...}> 과 같이 표현하고 Alt 키바인딩은 <A-{...}> 으로 표현하였다. Shift 키바인딩은 <S-{...}> 로 표현하였다.

3.1.1 Keybindings

3.1.1.1 <C-a> \, -

현재 윈도우에서 창을 분할하여 새로운 Pane을 만든다. \는 세로로 창을 분할하고 -는 가로로 창을 분할한다.

3.1.1.2 <C-a> a

새로운 윈도우를 추가한다. 윈도우는 번호가 증가하는 순으로 생성된다.

3.1.1.3 <C-a> r

.tmux.conf 파일이 변경된 경우 변경된 내용을 적용한다. source ~/.bashrc와 동일한 기능이다.

3.1.1.4 <C-a> #

해당 숫자의 윈도우로 바로 이동한다.

3.1.1.5 <C-a> h,j,k,l

현재 커서가 있는 Pane의 크기를 조정한다.

3.1.1.6 <A-Left,Right,Up,Down>

현재 윈도우의 Pane들을 네비게이션한다.

3.1.1.7 <S-Left,Right>

현재 세션의 윈도우들을 네비게이션한다.

3.1.1.8 <C-S-Left,Right>

현재 윈도우의 위치를 변경한다. 위치 뿐만 아니라 윈도우 번호 또한 같이 변경된다.

3.1.1.9 <M-S-Up,Down>

현재 Pane의 위치를 변경한다.

3.1.1.10 <C-a> Up, Mouse Scroll Up

Copy mode로 변경한다. Copy mode에서는 커서 스크롤이 가능해지며 vim 키바인딩을 지원한다. 아래는 필자가 주로 사용하는 copy mode에서 주요한 단축키 2개를 소개한다.

3.1.1.11 copy mode: /{search word}

vim과 같이 특정 단어를 검색할 수 있다. 터미널에 결과를 출력하는 프로그램의 경우 스크롤이 지나가서 원하는 단어를 찾기 어려운 경우가 발생하는데 이 때 vim과 같이 단어를 검색하여 빠르게 네비게이션할 수 있다.

3.1.1.12 copy mode: v,V,y,Y

v,V 를 통해 vim과 동일하게 Visual 모드로 전환하여 드래그하듯이 영역 선택이 가능해지며 y,Y 를 통해 특정 단어를 복사할 수 있다. 단, 여기서 복사를 수행하려면 약간의 과정이 필요하다.

우선 tmux의 버전이 2.5 버전 이상이어야 한다. 아래 명령을 통해 tmux의 버전이 2.6 이상인지 확인한다.

$ tmux -V

tmux 버전이 2.5 이상이라면 다음으로 xclip 을 설치한다. 만약 2.5 버전보다 낮다면 해당 링크를 참조하여 .tmux.conf 파일을 수정한다. xclip 이 정상적으로 설치되었다면 tmux를 다시 시작한 후 정상적으로 y,Y 복사 기능을 사용할 수 있다.

# Install xclip
$ sudo apt install xclip

# Check xclip is installed successfully
$ xclip -version

3.1.2 Terminal alias keybindings

본 섹션에서는 .bashrc 파일에 alias로 등록한 명령어들을 사용하는 키바인딩에 대해 설명한다.

3.1.2.1 t

t 명령어는 2개의 기능이 있다. 우선 위와 같이 t만 입력한 경우 터미널에서 tmux를 실행한다.

위와 같이 t 뒤에 숫자와 같이 입력한 경우에는 n번 세션으로 attach한다.

3.1.2.2 tl

현재 백그라운드에 존재하는 tmux 세션들의 리스트를 보여준다.

3.1.2.3 td

현재 세션으로부터 detatch한다. detatch하게되면 기존의 터미널로 빠져나온다.

3.1.2.4 tk

특정 번호의 세션을 종료한다.

3.1.2.5 t4

tmux를 자동으로 4분할 화면상태에서 시작한다.

4 References

  1. Linux tmux 사용법 - Velog
  2. 커맨드라인 개발환경 필수템, tmux 사용법 이걸로 끝내자 - 개발자맛 Youtube