[첫화면으로]Tmux

마지막으로 [b]

26 번째 수정본

tmux

ScreenUtility보다 좋다고 들어서... 일단 한 화면 내에서 다시 창을 분할할 수 있다니 솔깃하다. (screen의 경우는 공식 버전에는 없고 패치만 있다는 듯) 그러나 역시 터미널 프로그램들은 사용법 처음 읽히려면 으으...

1. 설치 시 문제
2. 튜토리알
2.1. 기본 사용법
2.2. 참조한 문서들
3. .tmux.conf 설정
4. 좌충우돌 사용기
4.1. 256컬러
4.2. vim solarized 테마
4.3. vim용 신택스 파일과 예제 conf 파일들
4.4. 윈도우 이름 자동 변경
4.5. 한 유저계정에서 서로 다른 tmux 세션 만들기
5. 기타
5.1. 세션이 있는데도 attach 가 안 될 때
6. Comments

1. 설치 시 문제

컴파일 도중에 특정 상수의 정의를 못 찾는다고 에러가 나더라.
control.c:103: error: ‘EVBUFFER_EOL_LF’ undeclared (first use in this function)

이건 의존성이 걸려 있는 libevent 의 버전이 낮아서 생긴 문제. yum 으로 설치한 게 1.4.13 이었는데 [이 글]을 보니 1.4.14나 2.0이 필요하다고 함. 그래서 libevent 를 따로 다운받아 컴파일,설치하여야 했음.

게다가 기존 1.4.13을 지우지 않았더만 링킹 과정에서 그게 먼저 적용되었는지 다음과 같은 형태의 에러가 줄줄이 났고
undefined reference to `bufferevent_write'

1.4.13을 지우고 나서 시도하니 컴파일이 거의 다 잘 되었는데 막판에
undefined reference to `__b64_ntop'
이 에러가 났는데, [이 글]을 참고해서 MakefileLIBS 변수의 값에다가 -lresolv를 넣어주니 해결되었음.

2. 튜토리알

2.1. 기본 사용법

screen과 비슷하게, tmux를 실행하면 하나의 session이 되고, session 안에서 여러 개의 window를 생성할 수 있고, 각 window를 또 여러 pane으로 분할해서 사용할 수 있다.

prefix에 해당하는 키는 C-b인데, 이건 vi의 스크롤과 충동하기도 하고 누르기도 불편하여 screen과 같이 C-a로 설정함

시작과 종료

도움말

윈도우

pane

카피 모드

2.2. 참조한 문서들

기초 사용법을 읽어볼 만한 것들을 뒤져봐서 찾은 것들. 이 페이지의 내용 중 많은 부분은 아래 글들의 내용을 주인장이 테스트하며 적었음.

3. .tmux.conf 설정

# reload conf
# prefix r 을 누르면 .tmux.conf 를 읽어서 곧바로 적용
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# Ctrl+a 를 prefix 로
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# visual bell
set-option -g visual-bell on

# pane 분할을 | 와 - 로
bind | split-window -h
bind - split-window -v

# 직전에 사용하던 윈도우 이동
bind a last-window

# C-o, o 둘 다 pane이동으로. rotate는 안 쓰니까 C-p로 이동
bind C-p rotate-window
bind C-o select-pane -t :.+

# monitor activity and silence
set-window-option -g monitor-activity on
set-option -g visual-activity on
set-window-option -g monitor-silence 0
bind S   set-window-option monitor-silence 30
bind M-s set-window-option monitor-silence 0

# 상태바 설정
# default statusbar colors
set-option -g status-bg blue
set-option -g status-fg white
set-option -g status-attr default
# default window title colors
set-window-option -g window-status-fg white
set-window-option -g window-status-bg default
set-window-option -g window-status-attr dim
# active window title colors
set-window-option -g window-status-current-fg white
set-window-option -g window-status-current-bg red
set-window-option -g window-status-current-attr bold

# pane border
set-option -g pane-border-fg colour235 #base02
set-option -g pane-active-border-fg colour240 #base0f
# message text
set-option -g message-bg colour235 #base02
set-option -g message-fg colour166 #orange
# pane number display
set-option -g display-panes-active-colour colour33 #blue
set-option -g display-panes-colour colour166 #orange
# clock
set-window-option -g clock-mode-colour colour64 #green

# mouse는 일단 끔
setw -g mode-mouse off
set -g mouse-select-pane off
set -g mouse-resize-pane off
set -g mouse-select-window off

# 윈도우를 닫으면, 남은 윈도우들의 번호를 다시 0부터 순차적으로 재정리
set-option -g renumber-windows on

Upload:tmux05.png

4. 좌충우돌 사용기

4.1. 256컬러

실행할 때 tmux -2라고 해야 256컬러 지원이 됨

Upload:tmux01.png
(그냥 실행했을 때)

Upload:tmux02.png
(-2 옵션을 주었을 때)

4.2. vim solarized 테마

이 놈의 컬러테마 하나 맘에 든다고 골랐다가 두고두고 귀찮게 군다.

[PuTTY][vim]에 solarized 컬러 테마가 적용된 상태에서, tmux를 띄우고 vim을 실행하면 이게 또 색상이 요상하게 나온다. 눈치로 보면 색상 가짓수가 몇 개 안 되어 그런 듯하다. -2 옵션을 주어도 마찬가지.

Upload:tmux03.png
(색상이 제대로 적용되지 않은 모습)

[vim-colors-solarized breaks inside tmux]의 마지막 답변글을 보아하니, tmux를 실행하는 시점의 TERM변수의 값이 xterm이었는데 이 상태에서는 8컬러까지만 지원하는 걸로 tmux가 인식하나보다. TERM변수의 값을 xterm-16color로 설정하고 실행하니까 제대로 되었다. (오히려 -2 옵션이 없어도 되더라)

나는 아예 alias를 써서 tmux를 실행하면 TERM=xterm-16color tmux -2를 실행하도록 하였음.

Upload:tmux04.png
(제대로 적용된 모습)

4.3. vim용 신택스 파일과 예제 conf 파일들

tmux 소스 파일의 압축을 풀면 examples 디렉토리 안에 몇 가지 샘플 파일들이 있다. *.conf 파일들은 설정파일 예제들인데, tmux -f 파일명으로 해당 파일을 로드해서 실행할 수 있으나, 이 설정 파일의 내용을 보면 자기 멋대로 여러 개의 창을 만들고 어떤 창에서는 mutt를 실행하는 등의 동작을 하도록 되어 있으니 주의.

그리고 설정 파일을 VimEditor로 편집할 때 신택스 하일라이트를 적용할 수 있다. tmux.vim 파일의 주석에 적힌 설명 참조.

4.4. 윈도우 이름 자동 변경

tmux를 실행하면 기본적으로 각 윈도우의 이름은 현재 포어그라운드에서 실행 중인 프로세스의 이름이 반영된다. 그런데 prefix , 또는 :rename-window로 이름을 지정하면 그 이름으로 고정되어 버리는데, 이걸 다시 원래대로 자동으로 프로세스 이름이 반영되게 하고 싶으면 다음처럼 automatic-rename 옵션을 켜주면 됨. (이 옵션이 원래 켜져 있다가 이름을 수동으로 바꾸면 저절로 꺼지는 식이다)

:set-window-option automatic-rename on

4.5. 한 유저계정에서 서로 다른 tmux 세션 만들기

예를 들어 서버에 web 이라는 계정이 있고, 여러 사람이 각자 그 계정으로 접속해서 작업하는데, 각자 자신이 선호하는 설정의 tmux 세션을 띄우고 싶다고 하자. 그런데 하나의 계정이기 때문에, 기본 상태에서는 제일 처음 tmux를 실행한 사람의 설정을 그대로 따라가서 두번째 사람부터는 -f 옵션을 써도 안 통한다. reload하면 다른 사람들까지 전부 바뀌어버린다.

이런 경우는 -L socket-name 옵션을 써서 서로 자신만의 독립적인 세션을 만들 수 있다.

tmux -L mysocket -f myconfig_file new-session : 세션 만드는 경우

5. 기타

5.1. 세션이 있는데도 attach 가 안 될 때

어느날 갑자기, ps 로 살펴보면 tmux 프로세스가 여전히 떠 있는데도 attach 를 시도하면 "no sessions"라고만 나오더라.

여기 답글에 있는 것처럼 killall -10 tmux 후 재시도하니 성공

6. Comments

마우스 선택은 putty의 경우 시프트 누르면서 하면 되는 옵션이 있는데…
-- 라슈펠 2014-10-14 8:22 pm
이름:  
Homepage:
내용:
 

컴퓨터분류

이 수정본 편집일: 2014-10-14 8:22 pm (변경사항 [d])
8151 hits | Permalink | 변경내역 보기 [h] | 현재 수정본 보기 | 26 번째 수정본 소스 보기