2012
Dec
16

tmux 與 screen 都是 Multiple terminal 的工具之一,平常我都是用 Putty connection manager 一次開兩個 tab ,分成左、右兩邊,再加上 screen 來開發,這個方式必須同時開兩個 ssh client,另外 connection manager 這個軟體在切換 tab 時又有 Bug , 常常會卡住,所以研究一下 tmux ,來試試看好不好用。

tmux

在安裝 tmux 之前,要先裝一個必備的軟體 libevent。

編譯與安裝 libevent

裝好之後可以在 /usr/local/lib/libevent-2.0.so.5 這裡找到 libevent 的 binary library。

編譯與安裝 tmux

裝好之後可以在 /usr/local/bin/tmux 這裡找到 tmux 的執行檔

如果一切沒問題,在 terminal 裡輸入 tmux 後,就可以進入 tmux 囉。

如何使用 tmux

tmux 的介面分成 window(視窗) 與 pane(窗格) 兩種,弄過這兩個功能,可以把畫面切割成很多區塊,例如我建立了二個 window 和 三個 pane,這樣的組合,就可以出現 6 個操作畫面,這樣可以一個用來編輯,一個用來跑 unit-test,一個用來看 log ...

第一次使用,什麼都不懂,當然就是用 「man tmux」 這個指令,來看看 tmux 有什麼功能,接著就一行一行來看 tmux 的說明。

  • tmux -2 : 啟用 256 色。
  • tmxu -8 : 啟用 88 色 , 一般來說使用 256 會比較好一點。
  • tmux -c [shell command]:
  • tmux -f [file]: 讀取 config 設定檔。
  • tmux -L [socket-name] : 指定一個 tmux 名稱
  • 進入上次的 tmux, attach : tmux attach
  • 列出目前的 tmux session 有那些 : tmux ls

tmux 的指令使用方式,必須要先按一下 tmux 的 prefix key,然後再接著輸入 tmux 的指令,預設的 prefix key 為 [Ctrl+b],所以要先按鍵盤的 [ctrl]+[b],再按一下 tmux 的指令熱鍵。

相關的熱鍵如下

  • 建立一個新的視窗 : 先按[Ctrl+b] ,再按一下 [c] ,這樣就會自已開啟一個視窗(window),而每一個視窗都會有一個編號,從 0 開始算, [0,1,2,3,4,5,...]。
  • 跳到新開的視窗 : [Ctrl+b] , [編號] ,一樣是先按一下 prefix key ,再按一下視窗的鍽號,就可以跳到剛剛打開的視窗了。
  • 跳出 tmux , detach : [Ctrl+b] ,[d]
  • [Ctrl+b] ,[n] : 跳到下一個 window
  • [Ctrl+b] ,[p] : 跳到上一個 window

tmux conf 設定檔

tmux 的設定檔可以依每個帳號有所不同,設定檔路徑為 ~/.tmux.conf 。

  • set -g mode-mouse on
  • set -g mouse-resize-pane on :使用滑鼠來調整 Pane 的尺寸,啟用這個功能後。
  • set -g pane-active-border-fg red : 修改 active Pane 的框為紅色。
  • set -g pane-border-fg black : 修改 Pane 的框為黑色。
  • set-window-option -g window-status-current-fg blue : 修改 active window 的字體顏觸為監色。

熱鍵設定

tmux 的熱鍵設定方式有 , bind , bind-key -n , bind-key -r 。

bind-key -n的意思是說,可以不須要先執行 prefix key [Ctrl+b], 例如我加入一個熱鍵 bind-key -n C-k kill-pane,這樣我只要按 [Ctrl+k]就能直接刪除一個 Pane ,不用事先按 [Ctrl+b]。

bind-key -r的意思是說,這個熱鍵是可以 repeat的,只要一直按著,就能重覆執行。

  • 更改 prefix key ,將 [Ctrl+b] 改成 [Ctrl+a] :
    • unbind C-b
  • set -g prefix C-a
  • 設定 [Ctrl+b],[s] 建立水平分割視窗 : bind s split-window -v
  • 設定 [Ctrl+b],[v] 建立垂直分割視窗 : bind v split-window -h
  • 設定 [Ctrl+x] 刪除一個 Pane : bind-key -n C-k kill-pane
  • 設定 [Alt+鍵盤上方鍵(^)] 移到上面的 Pane : unbind-key M-up ; bind-key -n M-up select-pane -U
  • 設定 [Alt+鍵盤下方鍵] 移到下面的 Pane : unbind-key M-down ; bind-key -n M-down select-pane -D
  • 設定 [Alt+鍵盤左鍵(<-)] 移到左邊的 Pane : unbind-key M-Left ; bind-key -n M-left select-pane -L
  • 設定 [Alt+鍵盤右鍵(->)] 移到右邊的 Pane : unbind-key M-right ; bind-key -n M-right select-pane -R
.tmux.conf
  1. setw -g mode-keys vi
  2. set -g default-terminal "xterm-256color"
  3. set-window-option -g xterm-keys on
  4.  
  5. bind s split-window -v
  6. bind v split-window -h
  7. bind-key -n C-k kill-pane
  8. unbind-key M-up ; bind-key -n M-up select-pane -U
  9. unbind-key M-down ; bind-key -n M-down select-pane -D
  10. unbind-key M-Left ; bind-key -n M-left select-pane -L
  11. unbind-key M-right ; bind-key -n M-right select-pane -R
  12. set -g pane-active-border-fg red
  13. set -g pane-border-fg black
  14. set -g status-justify left
  15. set -g status-interval 120 # 120 sec refresh status
  16. set -g display-time 3000
  17. set -g status-bg black
  18. set -g status-fg white
  19. set-window-option -g window-status-current-fg blue
  20. set-window-option -g window-status-current-bg yellow
  21. set-window-option -g window-status-current-attr default

參考資料


回應 (Leave a comment)