문제: 한글 모드에서 tmux가 말을 안 듣는다

tmux는 prefix key + 알파벳 키 조합으로 명령을 실행한다.

tmux의 기본 prefix는 Ctrl+B인데, 본인의 손가락이 짧아서..,,
한 손으로 누르기 불편해 Ctrl+A로 바꿔 쓰고 있다. 예를 들어 새 윈도우를 만들려면 Ctrl+Ac를 누른다.

그런데 한국어 입력 상태에서 이 조합을 누르면:

  1. Ctrl+A - 정상적으로 prefix로 인식된다
  2. c - 한국어 IME가 이 입력을 가로채서 으로 변환한다
  3. tmux는 을 알지 못하므로 명령이 무시된다

결국 tmux 명령을 쓸 때마다 한영 전환을 해야 한다. 세션 디태치, 윈도우 전환, 패널 분할 - 전부. 대부분의 기본 바인딩이 알파벳 단일 키이기 때문이다.

기본 tmux 바인딩 (한글 모드에서 전부 실패)
bind c new-window           # c → ㅊ
bind n next-window          # n → ㅜ
bind p previous-window      # p → ㅔ
bind d detach-client         # d → ㅇ
bind x kill-pane             # x → ㅌ

원인: IME의 키 입력 가로채기

키 입력이 애플리케이션에 도달하기까지의 경로를 보면 원인이 명확하다:

물리 키 입력 → OS IME 처리 → 터미널 에뮬레이터 → tmux
  • 알파벳 단독 입력 (c, n, p 등) - IME가 한글 조합을 시작한다. tmux에는 조합된 한글 문자가 전달된다.
  • Ctrl+알파벳 입력 (Ctrl+C, Ctrl+N 등) - Control modifier가 붙으면 IME가 개입하지 않는다. 제어 문자(control character)로 그대로 터미널에 전달된다.

핵심은 이것이다: Ctrl 조합은 IME를 건너뛴다.

해결: prefix 뒤의 키도 Ctrl 조합으로 바인딩

prefix 자체는 이미 Ctrl+A이므로 문제가 없다. prefix 뒤에 오는 명령 키도 Ctrl+알파벳으로 바꾸면, 전체 흐름에서 IME가 개입할 틈이 없어진다.

~/.tmux.conf
# 기존 (한글 모드에서 실패)
bind c new-window           # Ctrl+A → c (ㅊ으로 변환)
 
# 변경 (한글 모드에서도 동작)
bind C-c new-window         # Ctrl+A → Ctrl+C (IME 무시)

자주 쓰는 명령들을 모두 이 방식으로 재바인딩한다:

~/.tmux.conf
set -g prefix C-a
 
# 윈도우
bind C-p previous-window
bind C-c new-window
bind C-n next-window
bind C-w choose-tree -w
bind C-r command-prompt -I "#W" "rename-window -- '%%'"
 
# 패널
bind C-h split-window -v
bind C-v split-window -h
bind C-z resize-pane -Z
bind C-b break-pane
bind C-x command-prompt -p "Kill pane? (Enter/Esc)" "kill-pane"
 
# 유틸리티
bind C-d detach-client
bind C-e command-prompt
bind C-l refresh-client

kill-pane의 확인 프롬프트

kill-pane의 확인 입력도 같은 맥락이다. 기본 tmux의 kill-paney/n으로 확인하는데, 한글 모드에서 y가 되어 역시 먹히지 않는다. 그래서 Enter/Esc로 확인하도록 바꿔놨다 - 이 키들은 IME 상태와 무관하게 항상 동일하게 동작한다.

기존 바인딩과의 충돌

Ctrl+C, Ctrl+D 같은 키는 셸에서 시그널로 쓰이지만, 여기서는 prefix 뒤에 오는 키이므로 충돌하지 않는다. prefix를 먼저 누른 상태에서만 동작한다.

이제 한글이든 영문이든, Ctrl+ACtrl+C로 새 윈도우를 만들 수 있다. 한영 전환이 필요 없다.

한 단계 더: 매크로패드로 원버튼 제어

Ctrl+ACtrl+C는 두 번의 키 조합이다. 이것조차 버튼 하나로 줄일 수 있다.

넘패드형 매크로패드의 한 레이어를 tmux 전용으로 할당하면, 물리 버튼 하나로 tmux 명령을 실행할 수 있다. 레이어 스위치 키(우하단)를 누르고 있는 동안 tmux 레이어가 활성화되고, 손을 떼면 원래 레이어로 돌아온다.

각 버튼에는 Ctrl+ACtrl+<key> 시퀀스가 매크로로 등록되어 있다. 아래는 실제 사용 중인 레이아웃이다:

2
리프레시 ^a ^l
윈도우
리스트
^a ^w
이름변경 ^a ^r
풀스크린 ^a ^z
커맨드
모드
^a ^e
가로 분할 ^a ^h
세로 분할 ^a ^v
브레이크
패인
^a ^b
이전
윈도우
^a ^p
새 윈도우 ^a ^c
다음
윈도우
^a ^n
디태치 ^a ^d
패널 종료 ^a ^x
윈도우
패널
유틸리티

레이어 스위치 키(우하단 크림색 빈 키)를 누르고 있는 동안 이 레이어가 활성화된다. 왼손은 키보드에, 오른손은 매크로패드에 두면 tmux 조작이 마우스 클릭처럼 즉각적이 된다.

정리

방법동작한글 모드
기본 바인딩Ctrl+Ac 실패
Ctrl 바인딩Ctrl+ACtrl+C 동작
매크로패드버튼 한 번 동작

tmux 바인딩에서 알파벳 단독 키를 Ctrl 조합으로 바꾸는 것만으로 한영 전환 문제가 해결된다. 매크로패드는 선택이지만, 있으면 한 레이어를 tmux 전용으로 할당해서 터미널 멀티플렉싱을 물리 버튼으로 제어할 수 있다.

Ctrl 조합이 불편하지는 않은가?

처음에는 꽤 불편했다. 하지만 한 가지를 알게 된 뒤로 금방 손에 익었다 - Ctrl을 누른 상태에서 손을 떼지 않고 연속으로 입력할 수 있다는 것이다. 예를 들어 이전 윈도우로 두 번 이동하려면:

Ctrl(누른 채로)APAP

Ctrl에서 손을 뗄 필요가 없다. 이걸 깨닫고 나서 1주일 정도 쓰니 완전히 손에 익었고, 오히려 기존 방식보다 빠르게 원하는 동작을 수행할 수 있게 되었다.