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
--- layout:post title:"Welcome to Jekyll!" date:2017-05-03 18:53:47+0900 categories:jekyllupdate ---
빈 메타 정보는 빈 두개의 — 로 둔다.
Front matter 에 사용할 수 있는 내장된 변수는 다음 같다:
변수
설명
layout
사용할 레이아웃 파일을 지정한다. 레이아웃 파일명에서 확장자를 제외한 나머지 부분만 입력한다. 레이아웃 파일은 반드시 _layouts 디렉토리에 존재해야 한다.
permalink
생성된 블로그 포스트 URL 을 사이트 전역 스타일 (디폴트 설정: /year/month/day/title.html)이 아닌 다른 스타일로 만드려면, 이 변수를 사용하여 최종 URL 을 설정하면 된다.
published
사이트가 생성되었을 때 특정 포스트가 나타나지 않게 하려면 false 로 설정하라.
category,categories
포스트를 특정 폴더에 넣지 않고, 포스트가 속해야 하는 카테고리를 하나 또는 그 이상 지정할 수 있다. 사이트가 생성될 때, 포스트는 그냥 평범하게 이 카테고리들에 속한 것처럼 동작한다. 두 개 이상의 카테고리들을 지정할 때에는 YAML 리스트 또는 쉼표로 구분된 문자열을 사용한다.
tags
카테고리와 유사하게, 하나 이상의 태그를 포스트에 추가할 수 있다. 또 카테고리와 동일하게, YAML 리스트 또는 쉼표로 구분된 문자열로 지정할 수도 있다.
외부 자원
이미지, 다운로드 파일 등을 사용할 때는 루트 디렉토리의 images, assets, downloads 라는 디렉토리를 만들고 그곳에 둔다. 그리고 해당 자원의 참조를 / 경로를 기준으로 삼으면 된다.
disqus.com 에서 새 사이트를 구성하고, Jekyll 을 선택하면 Universal code 를 얻을 수 있다.
#### Disqus Universal Code 설치
comments 변수
comments 변수를 YAML Front Matter에 추가하기 위해, Jekyll의 manima 테마에서 _layouts/post.html 에 변수를 추가해 준다.
1 2 3 4
--- layout:default comments:true ---
Universal code
`{% if page.comments %}` 와 `{% endif %}` 태그 사이에 Universal Embeded Code를 추가해 준다. manima 테마의 \_includes/disqus_comments.html 파일에 구성되어 있다. 코드에서production을 developement로 바꿔서 테스트 해보자.
jekyll new 로 새 사이트를 설치하면 __includes/google-analytics.html 이 포함되어 있다. Google Analytics에서 Tracking ID를 발급받아 사용하면 된다.
#### Tracking ID
Google account가 있으면 손쉽게 만들수 있다.여기 에서 로그인해서 Admin > Property > Tracking Info > Tracking Code 에서 찾을 수 있다.
{:width=”400”}
#### 설정
파일 __includes/google-analytics.html 안의 {{ site.google_analytics }}에 Tracking ID가 치환 되는데, 이것은 _config.yml 파일 google_analytics: 항목에 본인의 Tracking ID를 입력한다.
1 2
# Google services google_analytics: UA—XXXXXXXX-X
#### default.html
이 파일을 _includes/head.html 파일에는 production 모드에서 analytics가 적용이 된다.
1 2 3
{% if jekyll.environment == 'production' and site.google_analytics %} {% include google-analytics.html %} {% endif %}
운영모드인 production 은 github 에 업로드시 자동으로 적용된다. 만약 다른 사이트에 업로드하려면 빌드를 한다. $ JEKYLL_ENV=production bundle exec jekyll build
group :jekyll_plugins do gem "jekyll-feed", "~> 0.6" gem "jekyll-paginate"
config.yml에서 활성화:
1 2 3 4 5 6 7 8
gems: - jekyll-feed - jekyll-paginate
#페이지 활성화 paginate: 6
Custom Domain
github page를 github.io 서브도메인 대신 본인의 도메인에 등록하려면 두 가지를 한다:
깃헙 페이지의 설정에서 custom domain 을 추가한다.
DNS에 CNAME을 등록한다.
Custom domain 추가
github 에서 github page 저장소의 Settings 에서 Custom Domain에 사용할 도메인 이름을 저장한다.
CNAME 등록
DNS에 CNAME 을 github의 USER_NAME.github.io 에 연결해 준다. 제대로 등록됐는지 dig 명령으로 확인한다.
1 2 3 4 5
$ dig docs.example.com +nostats +nocomments +nocmd ;docs.example.com. IN A docs.example.com. 3592 IN CNAME YOUR-USERNAME.github.io. YOUR-USERNAME.github.io. 43192 IN CNAME < GITHUB-PAGES-SERVER >. < GITHUB-PAGES-SERVER >. 22 IN A 199.27.XX.XXX
$ tmux # 세션을 시작하고 참가한다. $ tmux new -s foo # 세션 foo를 시작하고 참가한다
세션에 참가하면 하나 혹은 그 이상의 윈도우에서 Pane을 배치해 사용할 수 있다.
[그림. Tmux window layout]
Control와 Meta key
Tmux 세션 참가후 Window에서는 Prefix key로 Session, Window, Pane 관련 명령을 키로 조합해 사용한다. 기본 Prefix key는 Control+b key고 옵션으로 사용하는 Meta key는 Alt 키 이다.
여기서 Prefix key는 C와 조합으로 표기하고, Meta key인 Alt는 M으로 표기한다.
윈도우 명령 control, meta 키 조합과 병행해 윈도우에서 명령모드를 사용할 수 있다. 명령모드는 C-: 키로 시작하고, 명령모드에서 명령 자동 완성을 지원한다.
[그림. Window command mode]
Pane 다루기
윈도우는 수직/수평으로 구획을 나눌수 있다. C-“ 키로 현재 Pane 아래에 수평으로 새 Pane을 나눈다. 그리고 **C-%**키로 수직으로 새 Pane을 나눌 수 있다.
[그림. Tmux Window Pane]
C-q : pane 번호를 표시하고 번호를 눌러서 이동
C-o : pane을 순서대로 이동
C-방향키 : 해당 방향으로 이동
C-M-방향키 : 해당 방향으로 크기 조절
C-M-1~5 : 몇 가지 미리 설정된 레이아웃을 고를 수 있고, prefix space로 이 레이아웃을 순서대로 - 돌아가며 선택 가능
C-z : 특정화면만 확대하기 다시 예전 Panes상태로 돌아오기
Pane을 지우려면 터미널 exit 명령 혹은 C-x 키로 빠져 나올 수 있다.
Window 다루기
윈도우는 명령모드에서 new-window 혹은 C-c 키로 새 윈도우를 추가할 수 있다.
[그림. new Window ]
윈도우 사이의 이동은 윈도우 번호에 따라 단축키 C-0,1,2…9를 사용하거나 C-w로 윈도우 목록에서 선택해 이동할 수 있다.
C-n, C-p : 다음 윈도우, 이전 윈도우로 이동
C-l : 직전 사용하던 윈도우로 이동
C-w : 윈도우 리스트를 띄우고 선택
C-, : 윈도우 이름 바꾸기
세션 사용중에 세션을 빠져 나오려면 C-d 로 detach 하거나, 명령모드 C-:에서 detach 명령을 준다.
복사와 스크롤
Tmux 화면 버퍼는 한 화면분 밖에 안되서, 이전 화면 내용을 보려면 스크롤 기능을 켜야 한다. C+[ 키는 스크롤 키고, 우측상단에 페이지 표시가 나타난다. 키보드 방향키나 Page Up/Down키로 스크롤이 가능하다.
세션 연결
세션은 하나 혹은 그 이상 만들고 attach 명령으로 세션에 참가할 수 있다.
1 2 3 4
$ tmux new -s foo -d # 세션 foo를 시작하고 빠져나온다. $ tmux ls # 세션 목록을 출력한다. 0: 1 windows (created Fri May 12 10:26:00 2017) [80x24] (attached) foo: 1 windows (created Fri May 12 10:34:18 2017) [80x24]
터미널에서 세션에 참가하려면 attach 명령과 대상 세션을 지정해 준다. 대상 세션은 tmux ls 명령에 표시되는 세션번호 혹은 세션이름을 지정한다.
set -g @plugin 'tmux-plugins/tmux-resurrect' set -g @plugin 'tmux-plugins/tmux-continuum'
tmux 에서 플러그인 설치를 위해서 C-I (대문자) 를 실행
그리고 .tmux.conf 파일에 continuum-restore 을 on으로 해준다.
1
set -g @continuum-restore 'on'
tmux 세션을 모두 나와서 tmux 서버를 모두 kill-session 같은 명령으로 종료시킨후 tmux를 다시 시작하면 .tmux/resurrect 에 저장된 마지막 세션이 복구되는 것을 확인할 수 있다.
이제부터 15분 마다 자동 저장하고 서버를 재시작한 후에 tmux를 다시 시작하면 저장한 환경을 자동으로 복구해 준다.
tmux status 표시
tmux-continuum 의 상태를 tmux status line에 표시할 수 있다.
1
set -g status-right 'Continuum status: #{continuum_status}'
Linux에서 tmux 자동 시작
tmux-continuum 은 Linux systemd, macOS 에서 자동 시작을 지원한다.
Linux는 .tmux.conf 파일에 다음 부트 옵션을 추가한다.
1
set -g @continuum-boot 'on'
그리고 현재 실행중인 세션에 변경한 설정을 적용하려면
1
$ tmux source-file ~/.tmux.conf
macOS에서 tmux 자동 시작
.tmux.conf 파일에 다음 부트 옵션을 추가한다.
1
set -g @continuum-boot 'on'
그리고 현재 실행중인 세션에 변경한 설정을 적용한다.
1
$ tmux source-file ~/.tmux.conf
맥이 재시작 하면 자동으로 Terminal.app 이 실행된다. 터미널 크기는 다음 옵션으로 지정한다:
1 2 3 4
set -g @continuum-boot-options 'fullscreen'# terminal window will go fullscreen set -g @continuum-boot-options 'iterm'# start iTerm instead of Terminal.app set -g @continuum-boot-options 'iterm,fullscreen'# start iTerm in fullscreen
다중 tmux 서버는 지원하지 않는다.
tmux 로 서버를 하나 시작하고, tmux -S /tmp/foo 같이 다른 소켓을 사용했다고 자동 저장/복구가 별도로 진행되지 않는다. [^10]