tmux 基本設定
在 tmux 之中幾乎所有的操作都是由 tmux 所定義好的指令集來達成的,包括畫面切割、多重同步輸入以及畫面顯示調整等,在 tmux 之中都可以用特定的指令去完成,也可以將各式各樣的按鍵組合綁定(bind)到不同的指令上,讓平時可以更方便使用。
tmux 幾乎所有的設定都可以藉由命令列輸入指令進行修改,若想要每次開啟 tmux 時都可以有設定好的環境則需要透過建立與設定
$HOME/.tmux.conf
設定檔,或是設定系統全域通用的設定檔 /etc/tmux.conf
。設定檔中的指令,會在 tmux server 啟動的時候被讀取並執行。
我們首先介紹三個實用的設定指令:
- set-option
- set-window-option
- bind-key
* set-option
透過
set-option
可以修改狀態列的設定,加上參數 -g
則可以讓修改的設定作用在全體環境之中,不需要在切換 Window
之後還需要再修改相同的設定。狀態列示意圖如下:
tmux 狀態列示意圖 |
* set-window-option
透過
set-window-option
則是可以針對各 Window
在狀態列上所需要顯示的訊息做修改。
* bind-key
bind-key
則是可以自定義快捷鍵,將特定的按鍵組合綁定到所指定的指令之上,在按下快捷鍵的同時就等於在命令列上打上同等的指令。例如:
bind-key c new-window上述表示按下
<prefix-key> + c
(tmux 預設的 <prefix-key>
是 Ctrl + b
) 就等同於執行了 tmux new-window
的指令。tmux 預設的
<prefix-key>
是 Ctrl + b
, 筆者通常都會使用以下設定將 Ctrl + b
改為 Ctrl + a
:
set-option -g prefix C-a這麼做是因為一來以前使用 Screen 習慣了使用
Ctrl + a
作為 <prefix-key>
,另一方面也是 Ctrl + b
真的鍵盤上的距離太遠,十分不方便。了解 tmux 各式指令的作用後,就可以創造出相當多元的操作,像是預先定義好在開新視窗時便做好畫面分隔並且執行特定的指令等等的行為(例如製作 tmux dashboard),對於系統管理者而言,在檢視系統效能或者是記錄檔的時候都是相當有用的幫手。
tmux 畫面設定
tmux 顯示畫面如下圖所示可以粗略分為在底下的狀態列(
Status line
)以及 Window
,在每一個 Window
之中至少都會存在一個 Pane
作為終端機的顯示介面,若是 Window
中不存在任何 Pane
的話該 Window
則會自動被關閉。而 Status line
之中則包括了 Status-left
, Status-right
以及 Window list
三個部分。
|
在 tmux version 1.8 之前, 狀態列的設定被分為許多部分,包含了
status-(right|left)-attr
, status-(right|left)-bg
, status-(right|left)-fg
,而這些繁雜的設定在 tmux version 1.9a 這些設定都被整合為一個 status-(right|left)-style
,相較於以前採用每個選項各自設定的方式,現在採用的設定方式則較為淺顯易懂,降低了設定四散各地可能帶來的問題,例如:重複設定。以下筆者將簡單介紹 Status line
的相關設定,以及設定中會使用到的常見格式字串代表意義。tmux 中的
Status line
是具有繼承關係的,譬如說 Status line
中所設定的 style 是會被 status-left
跟 Status-right
所繼承當做預設值,若是希望彼此間採用不同的 style 設定可以採用分開設定的方式,或者是僅覆蓋一部分的設定。以筆者所使用的設定來說,則是在
Status-style
設定了基礎的底色以及預設的前景顏色,然後在 Status-left
以及 Status-right
中透過格式化字串個別設定不同區塊所使用的顏色,設定如下所示:
# status-line set-option -g status-style bg=colour235,fg=colour75 set-option -g status-justify centre set-option -g status-position bottom # status-left set-option -g status-left-style fg=colour147,bg=default set-option -g status-left "[ #[fg=colour161]#{=10:session_name}#[fg=default]:#2I:#2P ]" set-option -g status-left-length 20 # status-right-line set-option -g status-right-style fg=colour13,bright set-option -g status-right "[ #[fg=colour46]#{=19:pane_title}#[fg=default] %Y-%m-%d %H:%M ]" set-option -g status-right-length 40
其中 style 設定語句中可以設定前景(fg)、後景(bg),以及
Status line
相關屬性設定,其中相關屬性設定包含了 bright (or bold), dim, underscore, blink, reverse, hidden 或 italics 等設定。而
Status-left
之後所跟隨的格式化字串可以讓使用者自行設定希望在 Status line
中顯示的訊息(例如顯示時間)。關於格式化字串可以參閱 tmux manual 中的 Status-left
區塊的說明,或者是 FORMATS 區塊的完整說明,包含內建可用的顯示資訊、縮寫名稱以及限制顯示字串長度。以上是一些關於
Status line
的基本設定方法,在此也附上筆者所維護的 tmux 設定檔的 Github 連結,相關的設定可以到那邊參考,如果有任何議題除了在網誌下方留言外,也歡迎發送 Github issue 給筆者。以下是該設定檔的幾個簡單快捷鍵對照:
Ctrl a + c
開啟新 WindowCtrl a + n
移至下一個 WindowCtrl a + "
水平切割 WindowCtrl a + |
垂直切割 WindowCtrl a + o
移至下一個 PaneCtrl a + tab
移至最後使用的 Pane
此次筆者分享的 tmux 大約至此告一段落,還有許多 tmux 強大的功能尚未介紹,筆者將會在之後文章中繼續介紹並分享給大家,包含深入了解 tmux 指令組合還有 tmux powerline 等議題。
參考資料:
http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/tmux.1
沒有留言:
張貼留言