Skip to content

Tmux

Contents

tmux

vim 을 사용하다보면 다른 터미널 작업을 해야 할 때가 생깁니다. 물론 :!<CMD>:shellvim 내부에서 명령어를 실행할 수 있지만 솔직히 너무 불편하죠. 이런 경우를 위하여 tmux 로 터미널 하나를 여러 터미널로 분리할 수 있습니다.

Tip

vim 을 실습하느라 힘드셨을 것 같은데, tmuxvim 만큼 배우고 싶은데 알려주는 사람이 없어서 못배울 정도로 정말 좋은 프로그램이기 때문에 매우 간단하게 tmux 필수 기능만을 알아보겠습니다.

tmux 시작과 종료

도커 컨테이너에는 이미 tmux 가 설치되어 있습니다. 다음 명령어를 실행하여 tmux 를 실행해보세요.

⬇ EXECUTE! ⬇

$ tmux

그리고 나서 단순히 exit 를 입력하여 터미널을 종료시키면 tmux 도 자동으로 종료됩니다. exittmux 의 터미널을 종료해보세요.

⬇ EXECUTE! ⬇

$ exit

메타 키

기능 단축키
Meta Ctrl+b

tmux 에서는 Meta 키 를 사용하여 명령어들을 정의합니다. Meta 키란 Ctrl + b 입니다. 이제 Meta 키를 Meta 라고 하겠습니다. 그러니까 Meta+% 라고 한다면 (Ctrl + b) + % 를 뜻하는 것입니다.

터미널 분할

기능 단축키
터미널 수직 분할 Meta+%
터미널 수평 분할 Meta+"
다음 터미널으로 이동 Meta+o
(숫자) 터미널으로 이동 Meta+q + (숫자)

tmux 에서는 위와 같은 단축키로 수평으로, 수직으로 새로운 터미널을 생성할 수 있습니다.

Info

메타 키를 누른채로 %" 를 입력하면 안되요. 메타 키를 입력하고 나서 손을 떼고 %" 를 눌러보세요.

  • 다음과 같이 vim 으로 코딩을 하면서 소스코드를 컴파일하는 터미널, 소스코드를 실행하는 터미널을 분할하고 터미널을 전환해보세요.

    w08Lbg4Ucw

    Tip

    GIF 를 원본화질로 보면 고화질로 볼 수 있어요.

새로운 화면 생성

기능 단축키
새로운 화면 생성 Meta+c
다음 화면으로 이동 Meta+n
이전 화면으로 이동 Meta+p

터미널 작업을 하다보면 하나의 화면으로도 부족할 때가 있습니다. 그럴 때 화면을 하나 더 생성할 수 있습니다.

  • vim 으로 코딩을 하면서 소스코드를 컴파일하는 터미널에서 작업하다가, 급하게 gotop 명령어로 시스템 리소스를 확인해야 하는 상황이라면 다음과 같이 새로운 탭을 생성하고 작업하면 됩니다.

    y8uvCHmU1L

    Tip

    GIF 를 원본화질로 보면 고화질로 볼 수 있어요.

    • 위 예시에서는 화면을 2 개만 생성해봤지만 더 많이 생성할 수도 있습니다.

더 빨라진 tmux

tmux 업그레이드는 사실 실제적인 업그레이드가 아니라 tmux 의 설정을 커스터마이징할 수 있는 ~/.tmux.conf 파일에 사용자가 더 편하게 사용할 수 있도록 설정을 조작하는 것입니다. 그렇기 때문에 여기에서는 제가 설정한 ~/.tmux.conf 파일을 중심으로 tmux 를 사용하기가 얼마나 편해졌는지 살펴보겠습니다.

더 빨라진 alias

먼저 tmux 라는 명령어를 매번 치는 것은 너무 비효율적입니다.

Speed up!!

무려 4 번이나 키보드를 쳐야하기 때문이죠.

그래서 ~/.zsh_aliases

alias t=tmux

를 추가하여 t 만 눌러도 tmux 가 켜지도록 합니다.

  • 실습

    도커 컨테이너에서 다음 명령어로 tmux 를 켰다가 꺼보세요.

    $ t
    $ q
    

    CSpyoIvAGI

더 이뻐진 테마

tmux 의 오리지널 테마는 너무 안이쁘네요. 그래서 좀 더 가독성도 높아지고 보기에도 좋고 시간도 알 수 있도록 다음과 같은 설정으로 테마를 고칩니다.

set -g status-bg default
set -g status-fg colour137
set -g status-style dim
set -g status-left '#[fg=colour51,bg=colour0,bold] %R '
# set -g status-right '#[fg=colour51,bg=colour0,bold] #(uname -r) '
set -g status-right '#[fg=colour51,bg=colour0,bold] #(osname) '
set -g status-right-length 100
setw -g window-status-current-style bg=colour14,fg=colour00,bold
setw -g window-status-current-format ' #I#[fg=colour0] #[fg=colour0]#W#[fg=colour0] '
setw -g window-status-style fg=colour49,none,bg=colour00
setw -g window-status-format '#I #W '
setw -g window-status-bell-style fg=colour255,bold,bg=colour1
set -g message-style fg=colour232,bold,bg=colour16

이 설정들은 ~/.tmux.conf 에 있는데 그 의미를 상세히는 몰라도 됩니다.

  • 다음은 테마를 설정하기 전의 오리지널 tmux 의 테마입니다. 상태바가 아래쪽에 있고, 새 화면을 만들었지만 한 눈에 들어오지가 않습니다. 오른쪽에 시간도 표시되는데 역시 한 눈에 들어오지 않네요.

  • 하지만 다음과 같이 테마를 바꿔서 가독성을 확연히 높혔습니다. 상태바가 위로 올라갔고, 왼쪽에는 시간이 간략하지만 눈에 확 들어오게 보입니다.

    리고 0 번째 화면에는 zsh 이 켜져있고, 1 번째 화면에는 vim 이 켜져있는데 현재 상주하고 있는 화면에 하이라이팅이 되서 가독성이 매우 높아집니다. 오른쪽에는 운영체제의 이름도 나타납니다.

더 빨라진 메타 키

기능 기존 단축키 새로운 단축키
Meta Ctrl+b Ctrl+a

tmuxMeta 키 를 사용하여 명령어들을 정의하기 때문에 Ctrl+b 를 입력했어야 했습니다. 하지만 Ctrlb 는 거리가 너무 멀어서 손이 아픕니다. 그래서 ~/.tmux.conf

unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix

를 추가하여 거리가 가까운 Ctrl+aMeta 키를 재설정합니다.

Speed up!!

입력키 편의성 극대화!

여러분의 도커 컨테이너에는 이미 설정 되어있으니 걱정하지 마세요.

Info

앞으로 살펴볼 tmux 업그레이드들도 위와 같은 설정 파일을 조작하는 것으로 이루어졌지만, 시간이 너무 한정되어 있어서 일일이 어떤 설정으로 tmux 가 업그레이드되었는지 상세히 설명하지는 않겠습니다.

더 빨라진 터미널 분할

기능 기존 단축키 새로운 단축키
터미널 수직 분할 Meta+% Meta+
터미널 수평 분할 Meta+" Meta+-
다음 터미널으로 이동 Meta+o Alt+o
(숫자) 터미널으로 이동 Meta+q + (숫자)

tmux 에서 터미널을 수평으로 분할하려면 기존의 명령어 Meta+ " 를 입력해야 하는데 이건 외우기가 너무 어렵습니다. 그래서 외우기 쉽도록 수평으로 나눈다는 의미에서 Meta+ - 로 직관적으로 바꿉니다.

또한 터미널을 수직으로 분할하려면 기존의 명령어 Meta+ % 를 입력해야 하는데 이것 역시 외우기가 너무 어렵습니다. 그래서 외우기 쉽도록 수직으로 나눈다는 의미에서 백슬래쉬로 바꿔서 Meta+ 로 직관적인 단축키를 설정합니다.

Speed up!!

입력키 직관성 극대화!

그리고 다음 터미널로 이동하는 단축키 Meta+o 는 실제로 (Ctrl+a) + o 인데, 다음 터미널로 이동하는 작업은 매우 많이 일어나므로 키를 3 번이나 눌러야 하는 것은 너무 비효율적이어서 참을 수가 없습니다. 그래서 Alt+o 로 바꿉니다.

유일하게 MacOS 에서만 테스트를 못해봤기 때문에 MacOS 에서는 Alt 키로 하는 것이 안될 수도 있습니다. 그럴경우 그냥 Meta + o 로 하면 될 겁니다. 맥에서 Alt 가 어떻게 입력되는지 아시는 분이 있다면 알려주세요.

-> 맥에서 tmux 사용할 때 alt 를 Meta 키로 사용하는 방법은 터미널환경설정->프로파일->키보드 에서 option 을 메타키로 활성화하기 하면 option 키를 메타키로 사용할 수 있다고 합니다!

  • 실습

    다음과 같이 터미널을 수직, 수평으로 여러번 분할해보고 Alt 를 계속 누른 채로 o 를 눌러서 터미널을 이동해보세요.

    mMkWtsbnpw

    Speed up!!

    터미널 이동이 정말 빨라졌습니다.

더 빨라진 화면 생성

기능 기존 단축키 새로운 단축키
새로운 화면 생성 Meta+c Alt+c
다음 화면으로 이동 Meta+n Alt+n
이전 화면으로 이동 Meta+p Alt+p

새로운 화면을 생성하고 화면을 넘기는 일도 편하게 하기 위하여 Meta 키 대신 Alt 를 사용합시다. 메타키를 Alt 키로 바꾸는 것만으로 얼마나 작업이 빨라지는지 보세요.

  • 실습

    다음과 같이 Alt 를 계속 누른채로 c 를 연타해서 화면을 더욱 빠르게 만들 수 있습니다. 그리고 여러 화면을 마찬가지로 Alt 를 계속 누른채로 n 또는 p 를 누르면서 이동해보세요.

    q4pP5K9WGF

더 빨라진 터미널 이동

기능 기존 단축키 새로운 단축키
왼쪽 터미널으로 이동 (기억이 안남..) Alt+h
오른쪽 터미널으로 이동 (기억이 안남..) Alt+l
위쪽 터미널으로 이동 (기억이 안남..) Alt+k
아래쪽 터미널으로 이동 (기억이 안남..) Alt+j

터미널 이동을 Alt+o 로 매우 빠르게 할 수 있게 되었지만서도 터미널이 여러개로 나뉘었을 때 Alt+o 로 다음 터미널로밖에 이동할 수 없다면, 정확히 원하는 터미널로 이동할 수 없습니다. 이런 경우를 위하여 tmux 는 정확히 왼쪽, 오른쪽, 위쪽, 아래쪽 터미널로 이동할 수 있는 명령어를 제공합니다.

하지만 그건 너무 복잡했었고 그게 뭐였는지 솔직히 까먹었습니다. 그 대신 vim 에서의 커서 이동키였던 h, l, k, j 에서 착안하여 터미널 이동을 매우 쉽게 할 수 있습니다.

  • 실습

    다음과 같이 터미널을 여러개로 분할하고 Alt 를 누른채로 h, l, k, j 를 누르면서 터미널을 이동해보세요.

    YvxI7GtfRb

더 빨라진 터미널 크기 조절

기능 기존 단축키 새로운 단축키
터미널 크기를 왼쪽으로 방향으로 조절 (너무 복잡함) Alt+
터미널 크기를 오른쪽으로 방향으로 조절 (너무 복잡함) Alt+
터미널 크기를 위쪽으로 방향으로 조절 (너무 복잡함) Alt+
터미널 크기를 아래쪽으로 방향으로 조절 (너무 복잡함) Alt+

더 빨라진 터미널 크기 조절이라고 해봐야 터미널 크기 조절하는 방법을 배우지도 않았는데 라고 생각할 수도 있겠지만, 터미널 크기 조절하는 방법이 외울 수 없을 만큼 너무 복잡한 것이어서 안썼습니다. 과거의 제가 터미널 크기를 너무너무 쉽게 조절할 수 있도록 위와 같이 설정해놓았습니다.

  • 실습

    다음과 같이 터미널 단축키 Alt 를 계속 누른 채로 , , , 을 눌러서 터미널 크기를 너무나도 쉽게 조절해보세요.

    mpiJ2Gh3hi