tmux
로 터미널 편하게 사용하기
지금까지 함께 살펴보았던 CLI 프로그램들로 Linux 시스템에서도 편하고 빠르게 개발을 할 수 있습니다. 하지만 거의 모든 개발 상황에서 터미널 창 하나는 부족합니다. 이때 tmux
가 필요합니다.
tmux
사용법도 튜토리얼 에 자세히 써놓았기 때문에 여기에서는 tmux
를 사용하면, 또 커스터마이징하면 얼마나 생산성이 향상되는지만 살펴보겠습니다.
더 빨라진 tmux
!
tmux
업그레이드는 사실 실제적인 업그레이드가 아니라 tmux
의 설정을 커스터마이징할 수 있는 ~/.tmux.conf
파일에 사용자가 더 편하게 사용할 수 있도록 설정을 조작하는 것입니다. 그렇기 때문에 여기에서는 제가 설정한 ~/.tmux.conf
파일을 중심으로 tmux
를 사용하기가 얼마나 편해졌는지 살펴보겠습니다.
더 빨라진 alias
먼저 tmux
라는 명령어를 매번 치는 것은 너무 비효율적입니다. 무려 4
번이나 키보드를 쳐야하기 때문이죠. 그래서 ~/.zsh_aliases
에
alias t=tmux
를 추가하여 t
만 눌러도 tmux
가 켜지도록 합니다.
!!! note
`bash` 쉘 유저는 `~/.bashrc` 파일에 추가하면 됩니다.
더 이뻐진 테마
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
에 넣으면 됩니다.
!!! example
다음은 테마를 설정하기 전의 오리지널 `tmux` 의 테마입니다. 상태바가 아래쪽에 있고, 새 화면을 만들었지만 한 눈에 들어오지가 않습니다. 오른쪽에 시간도 표시되는데 역시 한 눈에 들어오지 않네요.
<img src="https://user-images.githubusercontent.com/16812446/82010318-ba28d180-96ac-11ea-833a-e2a7d65ef1c6.png" width="70%" height="auto">
하지만 다음과 같이 테마를 바꿔서 가독성을 확연히 높혔습니다. 상태바가 위로 올라갔고, 왼쪽에는 시간이 간략하지만 눈에 확 들어오게 보입니다.
<img src="https://user-images.githubusercontent.com/16812446/82010331-c319a300-96ac-11ea-9fc8-12505574f461.png" width="70%" height="auto">
그리고 `0` 번째 화면에는 `zsh` 이 켜져있고, `1` 번째 화면에는 `vim` 이 켜져있는데 현재 상주하고 있는 화면에 하이라이팅이 되서 가독성이 매우 높아집니다. 오른쪽에는 운영체제의 이름도 나타납니다.
더 빨라진 메타 키
기능 | 기존 단축키 | 새로운 단축키 |
---|---|---|
Meta 키 | Ctrl+b | Ctrl+a |
tmux
는 Meta 키 를 사용하여 명령어들을 정의하기 때문에
Ctrl
+
b
를 입력했어야 했습니다. 하지만
Ctrl
와
b
는 거리가 너무 멀어서 손이 아픕니다. 그래서 ~/.tmux.conf
에
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
를 추가하여 거리가 가까운
Ctrl
+
a
로 Meta 키를 재설정합니다. 여러분의 도커 컨테이너에는 이미 설정 되어있으니 걱정하지 마세요.
!!! info
앞으로 살펴볼 `tmux` 업그레이드들도 위와 같은 설정 파일을 조작하는 것으로 이루어졌지만, 일일이 어떤 설정으로 `tmux` 가 업그레이드되었는지 상세히 설명하지는 않겠습니다.
`.tmux.conf` 를 보시려면 [:octicons-file-code-24: .tmux.conf](https://github.com/ccss17/dotfiles-cli/blob/master/.tmux.conf) 를 확인해주세요.
더 빨라진 터미널 분할
기능 | 기존 단축키 | 새로운 단축키 |
---|---|---|
터미널 수직 분할 | Meta+% | Meta+⧵ |
터미널 수평 분할 | Meta+" | Meta+- |
다음 터미널으로 이동 | Meta+o | Alt+o |
(숫자) 터미널으로 이동 | Meta+q + (숫자) |
tmux
에서 터미널을 수평으로 분할하려면 기존의 명령어
Meta
+
"
를 입력해야 하는데 이건 외우기가 너무 어렵습니다. 그래서 외우기 쉽도록 수평으로 나눈다는 의미에서
Meta
+
-
로 직관적으로 바꿉니다.
또한 터미널을 수직으로 분할하려면 기존의 명령어
Meta
+
%
를 입력해야 하는데 이것 역시 외우기가 너무 어렵습니다. 그래서 외우기 쉽도록 수직으로 나눈다는 의미에서 백슬래쉬로 바꿔서
Meta
+
⧵
로 직관적인 단축키를 설정합니다.
그리고 다음 터미널로 이동하는 단축키
Meta
+
o
는 실제로 (
Ctrl
+
a
) +
o
인데, 다음 터미널로 이동하는 작업은 매우 많이 일어나므로 키를 3
번이나 눌러야 하는 것은 너무 비효율적이어서 참을 수가 없습니다. 그래서
Alt
+
o
더 빨라진 화면 생성
기능 | 기존 단축키 | 새로운 단축키 |
---|---|---|
새로운 화면 생성 | Meta+c | Alt+c |
다음 화면으로 이동 | Meta+n | Alt+n |
이전 화면으로 이동 | Meta+p | Alt+p |
새로운 화면을 생성하고 화면을 넘기는 일도 편하게 하기 위하여
Meta
키 대신
Alt
를 사용합시다. 메타키를
Alt
키로 바꾸는 것만으로 얼마나 작업이 빨라지는지 보세요.
더 빨라진 터미널 이동
기능 | 기존 단축키 | 새로운 단축키 |
---|---|---|
왼쪽 터미널으로 이동 | (기억이 안남..) | Alt+h |
오른쪽 터미널으로 이동 | (기억이 안남..) | Alt+l |
위쪽 터미널으로 이동 | (기억이 안남..) | Alt+k |
아래쪽 터미널으로 이동 | (기억이 안남..) | Alt+j |
터미널 이동을
Alt
+
o
로 매우 빠르게 할 수 있게 되었지만서도 터미널이 여러개로 나뉘었을 때
Alt
+
o
로 다음 터미널로밖에 이동할 수 없다면, 정확히 원하는 터미널로 이동할 수 없습니다. 이런 경우를 위하여 tmux
는 정확히 왼쪽, 오른쪽, 위쪽, 아래쪽 터미널로 이동할 수 있는 명령어를 제공합니다.
하지만 그건 너무 복잡했었고 그게 뭐였는지 솔직히 까먹었습니다. 그 대신 vim
에서의 커서 이동키였던
h
,
l
,
k
,
j
에서 착안하여 터미널 이동을 매우 쉽게 할 수 있습니다.
더 빨라진 터미널 크기 조절
기능 | 기존 단축키 | 새로운 단축키 |
---|---|---|
터미널 크기를 왼쪽으로 방향으로 조절 | (너무 복잡함) | Alt+← |
터미널 크기를 오른쪽으로 방향으로 조절 | (너무 복잡함) | Alt+→ |
터미널 크기를 위쪽으로 방향으로 조절 | (너무 복잡함) | Alt+↑ |
터미널 크기를 아래쪽으로 방향으로 조절 | (너무 복잡함) | Alt+↓ |
더 빨라진 터미널 크기 조절이라고 해봐야 터미널 크기 조절하는 방법을 배우지도 않았는데 라고 생각할 수도 있겠지만, 터미널 크기 조절하는 방법이 외울 수 없을 만큼 너무 복잡한 것이어서 안썼습니다. 과거의 제가 터미널 크기를 너무너무 쉽게 조절할 수 있도록 위와 같이 설정해놓았습니다.
tmux
사용 예시
다음은 tmux
를 통하여 nvtop
과 gotop
으로 GPU 상황과 CPU, RAM 상황을 모니터링하면서 딥러닝을 돌리고 있는 모습입니다.