tmux-sensible은 tmux 사용자라면 거의 필수적으로 설치하는 최우선 플러그인입니다. 리눅스 커뮤니티의 거장인 Tim Pope가 개발한 것으로, “tmux의 기본 설정(Default)이 너무 보수적이고 불편하니, 누구나 동의할 만한 상식적인(Sensible) 옵션들로 기본값을 바꾸자”라는 목적으로 만들어졌습니다.
WSL(Ubuntu 24.04)과 원격 서버(Ubuntu 26.04)를 오가며 Windows Terminal로 작업하시는 사용자님의 환경에서, 이 플러그인이 왜 중요한지 핵심 역할과 미사용 시 불편한 점을 정리해 드립니다.
1. tmux-sensible이 자동으로 잡아주는 핵심 역할
이 플러그인을 설치하면 ~/.tmux.conf에 복잡한 코드를 일일이 적지 않아도 다음과 같은 강력한 기본 설정들이 적용됩니다.
키 입력 지연 시간 제거 (escape-time 0): Vim/Neovim을 쓸 때 Esc 키를 누르면 즉시 모드가 바뀌도록 지연 시간을 없애줍니다.
히스토리 버퍼 대폭 확장 (history-limit 50000): 터미널 로그를 위로 스크롤해서 볼 수 있는 줄 수를 기본 2,000줄에서 50,000줄로 대폭 늘려줍니다.
256화면 색상 및 True Color 활성화: 윈도우 터미널 환경에서 현대적인 화려한 테마(NeoVim 내부 테마, 로고 등)가 깨지지 않고 정확한 색상으로 출력되도록 환경 변수를 잡아줍니다.
단축키 반복 시간 최적화 (repeat-time 600): 윈도우나 팬 크기를 조절할 때 단축키를 너무 연속으로 누르지 않아도 부드럽게 작동하도록 조절합니다.
2. 이 플러그인을 쓰지 않을 때 발생하는 치명적인 불편함
만약 tmux-sensible 없이 순정 상태의 tmux를 사용하면 다음과 같은 짜증 나는 상황들을 겪게 됩니다.
① Vim 사용 시 Esc 키 지연 현상 (가장 고통스러움)
순정 tmux는 Esc 키가 입력된 후 0.5초(500ms) 동안 다음 키가 들어오는지 기다립니다. 이 때문에 Vim에서 수정 모드를 빠져나오려고 Esc를 누른 뒤 바로 방향키를 누르면, 모드가 풀리는 게 아니라 엉뚱한 명령 시퀀스로 인식되어 코드가 뒤죽박죽 꼬여버립니다.
② 윈도우 터미널에서 빔(Vim) 테마 색상 깨짐
최신 윈도우 터미널은 수백만 가지 색상(True Color)을 표현할 수 있습니다. 하지만 순정 tmux는 구시대적인 8색/16색 모드로 시작하는 경우가 많아, 고급스러운 개발자용 빔 테마를 켜도 색상이 칙칙하게 뭉개지거나 아예 가독성이 떨어지는 색으로 변해버립니다.
③ 조금만 빌드 로그가 길어져도 위쪽 내용이 잘림
앞서 LLM 관련 컴파일(llama.cpp 빌드 등)이나 대용량 로그를 출력할 때, 순정 tmux는 기본 버퍼가 2,000줄밖에 되지 않습니다. 컴파일 도중 에러가 나서 위로 스크롤(Ctrl + B 후 [)을 해보면, 에러의 시작점이 이미 잘려 나가서 정작 중요한 에러 원인을 파악하지 못하는 상황이 발생합니다.
④ Ctrl + B 단축키 연속 입력의 피로감
순정 상태에서는 윈도우를 넘나들거나 팬을 다룰 때, 리눅스가 단축키 대기 시간을 너무 타이트하게 잡거나 반대로 너무 길게 잡아서 명령이 씹히는 느낌을 자주 받게 됩니다.
💡 요약 및 추천
tmux-sensible은 특이하고 기상천외한 기능을 추가해 주는 플러그인이 아닙니다. 단지 “당연히 이래야지” 싶은 현대적인 개발 환경 표준을 명령어 한 줄로 세팅해 주는 패키지입니다.
side-bar
현재 경로의 디렉터리 트리 표시에 가장 널리 사용되는 tmux-sidebar 플러그인
.tmux.conf 에 등록하고 설치하면 된다.
1
set -g @plugin 'tmux-plugins/tmux-sidebar
기본 단축키는 다음과 같습니다
C + Tab : 디렉터리 트리 사이드바를 열거나 닫습니다(토글). 커서는 원래 패널에 유지됩니다.
# List of plugins set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' # other plugins ... # Initialize TMUX plugin manager # (keep this line at the very bottom of tmux.conf) run '~/.tmux/plugins/tpm/tpm'
이제부터 15분 마다 자동 저장하고 서버를 재시작한 후에 tmux를 다시 시작하면 저장한 환경을 자동으로 복구해 준다.
키 바인딩
세션 수동 저장: Ctrl + b 누른 후 Ctrl + s (Resurrect 기능)
세션 수동 복원: Ctrl + b 누른 후 Ctrl + r (Resurrect 기능)
tmux 세션을 모두 나와서 tmux 서버를 모두 kill-session 같은 명령으로 종료시킨후 tmux를 다시 시작하면 .tmux/resurrect 에 저장된 마지막 세션이 복구되는 것을 확인할 수 있다.
tmux 무한 exited 문제
tmux-resurrect와 continuum은 가끔 문제를 일으킨다.
재시작 등의 이유로 이전 저장한 세션을 탑재중 무한 exited 로 종료되는 상황이 그것이다.
예를 들어 tmux2k 설정중 시스템 locale 을 다시 설정하게 된 후 tmux 가 exited 되는 문제가 발생했다.
세션을 모두 빠져나간다
1
$ tmux kill-server # 다른 터미널에서 실행
방법1:
.tmux.conf 에서 set -g @continuum-restore ‘on’을 #으로 주석 처리
tmux 실행 후 정상 작동 확인후 안되면 방법2로 모든 세션을 초기화 한다.
방법2. continuum 세션 삭제
continuum 의 세션은 백업 파일이 꼬여서 그런것 같다.
tmux-resurrect와 continuum은 세션 정보를 특정 디렉토리에 텍스트 파일로 저장하고 있다.
기본 저장 위치는 아래와 같다.
1 2 3 4 5
$ ls -l .local/share/tmux/resurrect/ total 4 lrwxrwxrwx 1 user user 34 5월 29 21:47 last -> tmux_resurrect_20260529T214713.txt -rw-r--r-- 1 user user 239 5월 29 21:36 tmux_resurrect_20260529T213616.txt -rw-rw-r-- 1 user user 0 5월 29 21:47 tmux_resurrect_20260529T214713.txt
tmux 세션을 만들고, 세션에서 window를 구성하고, window 안에 pane에 대해서 요약
새로운 세션 시작하기
1 2
$ tmux #새로운 새션 $ tmux new -s session_name #session_name으로 새로운 세션
세션을 dettach하면 세션은 저장된다. 사용하지 않으면 kill로 종료한다.
세션 이용하기
1 2 3
$ tmux ls $ tmux list-session $ tmux list-windows # Window 목록
열린 세션에 붙기.
세션 번호중 낮은 번호에 우선해서 접속한다.
1 2 3
$ tmux attach $ tmux at $ tmux a
특정 세션에 접속하기
세션 번호 혹은 이름으로 접속한다.
1
$ tmux a -t session_name
세션 마감하기
1
$ tmux kill-session session_name
Tmux pane
Tmux로 접속한 session은 처음 한개의 Window를 갖는다. window 안에서 session, window, pane을 관리한다. 각 윈도우는 한 개 이상의 Pane 구획으로 나누어 사용할 수 있다.
Tmux window를 여러 분할면 pane으로 나눠 사용한다.
1 2 3 4 5 6 7 8 9 10 11
C-% # 수직으로 나누기 C-" # 수평으로 나누기 C-z # 현재 pane 확대 및 돌아오기 C-{ # 현재 pane을 이전 pane 위치로 이동 C-} # 현재 pane을 다음 pane 위치로 이동 C-Arrow # 앞,뒤 pane을 방향키로 이동 C-M+Arrow # pane 크기를 방향키에 따라 변경 C-spacebar # pane 방향 전환 (수직<->수평) C-! # 현재 pane을 새 window로 분리 C-x # 현재 pane을 종료 C-[ # pane에서 스크롤 기능을 활성화
Tmux copy & paste
tmux 는 자체 버퍼에 터미널에서 선택한 영역의 텍스트를 복사해서 사용할 수 있다.
1 2 3 4
C-[ # copy mode Ctrl+space # 복사할 영역을 선택한다. 터미널에 영역이 선택되어 보인다. Ctrl+w # 선택한 영역을 복사한다. C-] # 붙여 넣는다.
Tmux Window
현재 세션 이용
1 2
C-s #Session 목록 C-$ #Session 이름 변경
세션에서 여러 윈도우를 추가 해서 사용할 수 있다.
1
C-c #새로운 윈도우 생성
여러 윈도우는 윈도우 순서에 따라 현재 윈도우 화면을 교환 할 수 있다.
1 2 3 4 5 6 7
C-w #윈도우 목록 C-1 ... #지정 윈도우 번호로 전환: 0,1,... C-p #이전 윈도우로 이동 C-n #다음 윈도우로 이동 C-l #가장 마지막 윈도우로 이동 C-, #현재 윈도우 이름 변경 C-& #현재 윈도우 제거
현재 세션에서 나온다. 세션은 백그라운드에서 실행된다.
1 2
C-d #현재 세션을 빠져 나온다 (detach) C-D #빠져나올 세션을 선택할 수 있다.
detach 는 외부 터미널에서 tmux detach 를 실행하면 현재 tmux 세션이 분리된다.
Session transition
Tmux window 상태에서 여러 세션 사이의 전환 단축키;
1 2 3 4 5
C-$ # 현재 세션 이름 바꾸기 C-( # 이전 세션으로 전환 C-) # 다음 세션으로 전환 C-L # 사용한 세션중 마지막 세션으로 전환 C-s # 사용 가능한 세션 목록
단, 시스템 버퍼는 별도의 플러그인을 사용한다.
재미있는 설정
마우스 모드 활성화
설정에 mouse mode 활성화를 .tmux.conf 설정으로 지정.
1
set -g mouse on
설정을 탑재하면 1. 마우스 드래그로 선택한 버퍼 복사 2. Shift 마우스 드래그로 일반 Copy 수행.
버퍼 크기
1 2
# scrollback buffer size increase set -g history-limit 100000
Pane 이동
M 와 방향키로 바인딩해서 prefix 없이 사용.
1 2 3 4 5
# Use Alt-arrow keys without prefix key to switch panes bind -n M-Left select-pane -L bind -n M-Right select-pane -R bind -n M-Up select-pane -U bind -n M-Down select-pane -D
상태바 컬러
1 2 3
# bar color set -g status-bg black set -g status-fg white
ssh-keygen 명령으로 SSH 키를 생성할 때 rsa와 ED25519는 서로 다른 암호화 알고리즘을 사용하며, 각각 장단점이 있습니다.
1. RSA (Rivest-Shamir-Adleman)
역사 및 범용성: RSA는 매우 오래되고 널리 사용되는 공개 키 암호화 알고리즘입니다. 오랫동안 SSH 키의 표준으로 사용되어 왔으며, 대부분의 시스템과 호환됩니다.
키 크기: RSA 키는 가변적인 길이를 가집니다. 일반적으로 보안을 위해 2048비트 또는 4096비트를 권장합니다. 키 길이가 길어질수록 보안은 강해지지만, 연산 속도는 느려집니다.
보안: 충분히 긴 키 길이 (예: 2048비트 이상)를 사용하면 현재로서는 안전하다고 여겨지지만, 양자 컴퓨터의 발전 등 미래의 위협에 대한 우려가 있습니다.
성능: 키 길이가 길어질수록 키 생성, 서명 및 검증 작업이 느려질 수 있습니다.
2. ED25519 (Edwards-curve Digital Signature Algorithm)
기반 기술: ED25519는 타원 곡선 암호화(ECC)의 일종인 Edwards-curve Digital Signature Algorithm을 기반으로 합니다. OpenSSH 6.5에서 도입되었습니다.
보안: ED25519는 더 작은 키 크기로도 RSA와 동등하거나 더 높은 수준의 보안을 제공합니다. 예를 들어, ED25519의 256비트 키는 RSA 3000비트 키와 비슷한 보안 강도를 가집니다. 특정 암호화 공격(예: PRNG(Pseudo-Random Number Generator) 실패)에 더 강력하다고 알려져 있습니다.
성능: 키 생성, 서명 및 검증 작업이 RSA보다 훨씬 빠르고 효율적입니다. 이는 로그인 시간 단축 등 전반적인 사용자 경험 개선으로 이어질 수 있습니다.
키 크기: ED25519 키는 고정된 256비트 크기를 가지므로 RSA 키보다 훨씬 짧습니다. 이 때문에 키를 관리하고 공유하는 데 더 효율적입니다.
호환성: 비교적 최신 알고리즘이므로, 매우 오래된 시스템이나 특정 환경에서는 지원되지 않을 수도 있습니다. 하지만 최신 시스템에서는 널리 지원됩니다.
주요 차이점 요약:
특징
RSA
ED25519
기반
정수 분해 문제
타원 곡선 암호화 (ECC)
키 크기
가변 (2048, 4096비트 등 권장)
고정 (256비트)
보안
충분히 길면 안전하지만, 미래 위협 우려
작은 키로도 높은 보안성, 특정 공격에 강함
성능
키 길이에 따라 느려질 수 있음
빠르고 효율적
호환성
매우 광범위
최신 시스템에서 널리 지원, 일부 구형 시스템 제한
어떤 것을 사용해야 할까요?
특별한 이유가 없다면 ED25519를 권장합니다. 더 나은 보안성과 성능을 제공하며, 대부분의 최신 환경에서 문제없이 사용할 수 있습니다.
레거시 시스템과의 호환성이 중요하거나, ED25519를 지원하지 않는 환경이라면 RSA를 사용해야 합니다. 이 경우 최소 2048비트, 가능하다면 4096비트 키를 사용하는 것이 좋습니다. Windows 또는 VMware 이미지와 같은 특정 환경에서는 ED25519가 지원되지 않을 수 있습니다.
결론적으로, 현재 대부분의 SSH 키 생성에는 ED25519가 권장되는 최신, 안전, 고성능 옵션입니다.
github, bitbucket 같은 클라우드 사이트에 Client 프로그램으로 SSH 접속을 위해서는 SSH 키 쌍 생성하고 클라우드 사이트에 등록해야 한다. 보통 github, bitbucket 등 같은 SSH 접근을 지원하는 사이트는 ssh-agent forwarding 방식을 사용한다.
클라이언트에서 bitbucket 에 SSH 접속이 가능한지 테스트한다. 단, 모든 SSH 연결은 최초 접속시 호스트 접속 여부를 묻는다. 아래 같이 bitbucket.org 접속시 접속 여부를 묻는 다이얼로그가 나온다.
1 2 3 4 5 6 7 8 9
$ ssh -T git@bitbucket.org The authenticity of host 'bitbucket.org (104.192.141.1)' can't be established. ED25519 key fingerprint is SHA256:ybgmFkzwOSotHTHLJgHO0QN8L0xErw6vd0VhFA9m3SM. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'bitbucket.org' (ED25519) to the list of known hosts. authenticated via ssh key. You can use git to connect to Bitbucket. Shell access is disabled
결과적으로 아래 같이 결과가 출력되면 성공한 상태다.
1 2 3
authenticated via ssh key.
You can use git to connect to Bitbucket. Shell access is disabled
이제 git 클라이언트에서 HTTPS, SSH 를 통해서 bitbucket 과 ssh 연결이 가능하다. git 클라이언트로 push, pull 등을 수행할 수 있다.
rsync -e"ssh -c arcfour -o Compression=no" ...rest of rsync cmd...
TCP Optimization
MTU(Maximum Transmission Unit)
네트워크 인터페이스에서 세그먼트 없이 보낼수 있는 최대 데이터그램 크기 값입니다. 만약 데이터가 MTU 값 이상이라면 여러개의 패킷으로 분할이 될 것입니다. 간단하게 보자면 MTU 는 패킷이 한번에 보낼 수 있는 최대 크기라고 볼 수 있습니다.
이더넷의 MTU 값은 일반적으로 1500 바이트이며 옛날에 모뎀을 통해 접속하던 PPPoE 연결은 1492 바이트를 가지고 있습니다.
MTU 는 각 패킷 프레임안에 최대 전송할 수 있는 값 MSS(Maximum segment size) 가 정의되어 있습니다. 그렇다면 MTU는 MSS + TCP/IP 헤더 크기가 될 것이고 반대로 MSS 는 MTU - 40 바이트가 됩니다. 40 바이트는 IP 와 TCP 헤더 20 바이트씩을 뜻합니다.
에러 mount_osxfuse: the file system is not available (255)
There appears to be a problem loading the KEXT installed by the regular osxfuse Homebrew package. You can use brew cask to install the official FUSE for OS X build from their own DMG: