推薦使用tmux – a "terminal multiplexer"

tmux是一個類似常見的GNU Screen軟體,那作者為啥還開發呢,原因單純,他覺得Screen使用的Licence是GNU有些限制,所以就順手寫了一個類似功能但是卻是用BSD Licence,除了Screen常用的功能都有外,tmux還可以在單一一個window中處理多個不同的terminal,如果你常跟我之前一樣需要常常切換在Screen之間去做事情,你一定會愛死tmux的!!

首先,先來談談如何安裝,由於不是每種OS所提供的tmux package都是最新的1.0版,所以我會建議直接抓tarball回來編譯,快又簡單。安裝步驟如下:

  1. 下載最新的tmux tarball (目前是tmux-1.0.tar.gz)
  2. 解開tarball: tar zxf tmux-1.0.tar.gz
  3. 如果你不是FreeBSD uesr請跳過此步驟,編輯configure檔,移除第215行的"#define HAVE_TREE_H"
  4. ./configure && make && make install
  5. 大功告成

如果上述步驟一切順利,理論上就可以順利執行tmux了,但是tmux預設的command prefix是Ctrl+b而非Screen慣用的Ctrl+a,所以我會建議先編輯一份自己專屬的tmux設定檔(vim ~/.tmux.conf),設定如下: 原始檔在此下載

# Written by clyang _AT_ clyang.net
# General Setting
set-option -g prefix C-a
set-window-option -g automatic-rename off

# Statusbar properties.
set -g display-time 3000
set -g status-bg black
set -g status-fg cyan
set -g status-right "#(uptime|awk '{print $11}') #(date)"

# Fix putty/pietty function key problem
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~"

# Binding key
bind C-a send-prefix
bind s split-window
bind '"' splitw\; selectl main-vertical
bind -n F1 lock
bind -n F2 up-pane
bind -n F3 down-pane
bind -n F9 resizep -U 1
bind -n F10 resizep -D 1
bind -n F11 resizep -L 1
bind -n F12 resizep -R 1

# Tmux lock setting
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的大小):

tmux

本篇發表於 Linux, 技術 並標籤為 , , , 。將永久鏈結加入書籤。

推薦使用tmux – a "terminal multiplexer" 有 2 則回應

  1. terces 說道:

    啊啊
    有大神推薦
    找時間在 csiex.cs && linux.cs 上面編一下 ~

  2. rk87 說道:

    Ctrl+a後按 s : 將視窗切為左右兩個區塊
    || (反了?)
    Ctrl+a後按 " : 將視窗切為上下兩個區塊

發表迴響

您的電子郵件位址並不會被公開。 必要欄位標記為 *

*

您可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>