문제: 한글 모드에서 tmux가 말을 안 듣는다
tmux는 prefix key + 알파벳 키 조합으로 명령을 실행한다.
tmux의 기본 prefix는
Ctrl+B인데, 본인의 손가락이 짧아서..,,
한 손으로 누르기 불편해Ctrl+A로 바꿔 쓰고 있다. 예를 들어 새 윈도우를 만들려면Ctrl+A→c를 누른다.
그런데 한국어 입력 상태에서 이 조합을 누르면:
Ctrl+A- 정상적으로 prefix로 인식된다c- 한국어 IME가 이 입력을 가로채서ㅊ으로 변환한다- 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가 개입할 틈이 없어진다.
# 기존 (한글 모드에서 실패)
bind c new-window # Ctrl+A → c (ㅊ으로 변환)
# 변경 (한글 모드에서도 동작)
bind C-c new-window # Ctrl+A → Ctrl+C (IME 무시)자주 쓰는 명령들을 모두 이 방식으로 재바인딩한다:
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-clientkill-pane의 확인 프롬프트
kill-pane의 확인 입력도 같은 맥락이다. 기본 tmux의kill-pane은y/n으로 확인하는데, 한글 모드에서y는ㅛ가 되어 역시 먹히지 않는다. 그래서Enter/Esc로 확인하도록 바꿔놨다 - 이 키들은 IME 상태와 무관하게 항상 동일하게 동작한다.
기존 바인딩과의 충돌
Ctrl+C,Ctrl+D같은 키는 셸에서 시그널로 쓰이지만, 여기서는 prefix 뒤에 오는 키이므로 충돌하지 않는다. prefix를 먼저 누른 상태에서만 동작한다.
이제 한글이든 영문이든, Ctrl+A → Ctrl+C로 새 윈도우를 만들 수 있다. 한영 전환이 필요 없다.
한 단계 더: 매크로패드로 원버튼 제어
Ctrl+A → Ctrl+C는 두 번의 키 조합이다. 이것조차 버튼 하나로 줄일 수 있다.
넘패드형 매크로패드의 한 레이어를 tmux 전용으로 할당하면, 물리 버튼 하나로 tmux 명령을 실행할 수 있다. 레이어 스위치 키(우하단)를 누르고 있는 동안 tmux 레이어가 활성화되고, 손을 떼면 원래 레이어로 돌아온다.
각 버튼에는 Ctrl+A → Ctrl+<key> 시퀀스가 매크로로 등록되어 있다. 아래는 실제 사용 중인 레이아웃이다:
리스트 ^a ^w
모드 ^a ^e
패인 ^a ^b
윈도우 ^a ^p
윈도우 ^a ^n
레이어 스위치 키(우하단 크림색 빈 키)를 누르고 있는 동안 이 레이어가 활성화된다. 왼손은 키보드에, 오른손은 매크로패드에 두면 tmux 조작이 마우스 클릭처럼 즉각적이 된다.
정리
| 방법 | 동작 | 한글 모드 |
|---|---|---|
| 기본 바인딩 | Ctrl+A → c | 실패 |
| Ctrl 바인딩 | Ctrl+A → Ctrl+C | 동작 |
| 매크로패드 | 버튼 한 번 | 동작 |
tmux 바인딩에서 알파벳 단독 키를 Ctrl 조합으로 바꾸는 것만으로 한영 전환 문제가 해결된다. 매크로패드는 선택이지만, 있으면 한 레이어를 tmux 전용으로 할당해서 터미널 멀티플렉싱을 물리 버튼으로 제어할 수 있다.
Ctrl 조합이 불편하지는 않은가?
처음에는 꽤 불편했다. 하지만 한 가지를 알게 된 뒤로 금방 손에 익었다 - Ctrl을 누른 상태에서 손을 떼지 않고 연속으로 입력할 수 있다는 것이다. 예를 들어 이전 윈도우로 두 번 이동하려면:
Ctrl(누른 채로)→A→P→A→PCtrl에서 손을 뗄 필요가 없다. 이걸 깨닫고 나서 1주일 정도 쓰니 완전히 손에 익었고, 오히려 기존 방식보다 빠르게 원하는 동작을 수행할 수 있게 되었다.