tmux是一個類似常見的GNU Screen軟體,那作者為啥還開發呢,原因單純,他覺得Screen使用的Licence是GNU有些限制,所以就順手寫了一個類似功能但是卻是用BSD Licence,除了Screen常用的功能都有外,tmux還可以在單一一個window中處理多個不同的terminal,如果你常跟我之前一樣需要常常切換在Screen之間去做事情,你一定會愛死tmux的!!
首先,先來談談如何安裝,由於不是每種OS所提供的tmux package都是最新的1.0版,所以我會建議直接抓tarball回來編譯,快又簡單。安裝步驟如下:
- 下載最新的tmux tarball (目前是tmux-1.0.tar.gz)
- 解開tarball: tar zxf tmux-1.0.tar.gz
- 如果你不是FreeBSD uesr請跳過此步驟,編輯configure檔,移除第215行的"#define HAVE_TREE_H"
- ./configure && make && make install
- 大功告成
如果上述步驟一切順利,理論上就可以順利執行tmux了,但是tmux預設的command prefix是Ctrl+b而非Screen慣用的Ctrl+a,所以我會建議先編輯一份自己專屬的tmux設定檔(vim ~/.tmux.conf),設定如下: 原始檔在此下載
01.
# Written by clyang _AT_ clyang.net
02.
# General Setting
03.
set
-option -g prefix C-a
04.
set
-window-option -g automatic-rename off
05.
06.
# Statusbar properties.
07.
set
-g display-
time
3000
08.
set
-g status-
bg
black
09.
set
-g status-
fg
cyan
10.
set
-g status-right
"#(uptime|awk '{print $11}') #(date)"
11.
12.
# Fix putty/pietty function key problem
13.
set
-g terminal-overrides
"xterm*:kf1=/e[11~:kf2=/e[12~:kf3=/e[13~:kf4=/e[14~:kf5=/e[15~:kf6=/e[17~:kf7=/e[18~:kf8=/e[19~"
14.
15.
# Binding key
16.
bind C-a send-prefix
17.
bind s
split
-window
18.
bind '"' splitw/; selectl main-vertical
19.
bind -n F1 lock
20.
bind -n F2 up-pane
21.
bind -n F3 down-pane
22.
bind -n F9 resizep -U 1
23.
bind -n F10 resizep -D 1
24.
bind -n F11 resizep -L 1
25.
bind -n F12 resizep -R 1
26.
27.
# Tmux lock setting
28.
pass -c '$1$A.n6u0qu$KwXA5FnUfkWJpVLoIY1D30'
上述設定檔簡單來說,我把預設的send-prefix從Ctrl+b改成Screen習慣使用的Ctrl+a,然後定義一些快速鍵讓做事情更方便,列表如下:
- Ctrl+a後按 s : 將視窗切為左右兩個區塊
- Ctrl+a後按 " : 將視窗切為上下兩個區塊
- Ctrl+a後按 c : 產生新的window (跟screen一樣)
- Ctrl+a後按 d : 將tmux detch到背景 (呼叫回來請使用tmux attach,就如同screen -r)
- 按下F1: 鎖定tmux,會顯示一個大型的數位時鐘,密碼預設在tmux.conf裡面, 請使用"openssl passwd -1″產生,再將該字串填入pass -c後面那一串,別忘了前後都要加上單引號 ‘ 喔!!當你必須暫時離開座位時,只需要按下F1馬上鎖定tmux
- F2移動到單一畫面中的上一個pane
- F3移動到單一畫面中的下一個pane
- F9將目前這個pane的邊界往上增加一行
- F10將目前這個pane的邊界往下增加一行
- F11將目前這個pane的邊界往左增加一行
- F12將目前這個pane的邊界往右增加一行
其他的功能,大家多多摸索吧,建議趕快裝起來自己體驗一下tmux + 上述快速鍵好用的地方吧!!!
最後當然要有圖有真相(畫面左邊跟右邊那三個切割視窗就是稱之為pane,按F2、F3可以在各pane間切換,按F9~F12可以調整每個pane的大小):