本篇介紹如何在 Linux 中使用 tmux 終端機管理工具,分割視窗、同時開啟多個終端機。

傳統上在 Linux 中最常見的終端機管理程式是 screen,而後來又發展出 tmux 這個新的終端機管理工具,其功能更多,使用起來更方便。

安裝 tmux

若是 Ubuntu Linux 可用 apt 安裝 tmux

# Ubuntu Linux 安裝 tmux
sudo apt install tmux

若為 CentOS Linux 則可用 yum 安裝 tmux

# CentOS Linux 安裝 tmux
sudo yum install tmux

安裝好之後,即可執行 tmux

# 執行 tmux
tmux

進入 tmux 之後,畫面會像這樣,底部多了一條狀態列:

tmux 基本環境畫面

tmux 基本環境畫面

基本觀念

當我們執行 tmux 指令時,就會建立一個新的 session,在一個 session 中可以建立多個 windows,而每個 window 又可以分割成多個 panes,在下方的狀態列中會顯示目前所處的 session 與 window 編號。

Session、Window 與 Panes

Session、Window 與 Panes

在狀態列中最左側的編號是目前的 session 編號,接著是目前 session 之中所有的 windows 編號以及正在執行的程式名稱,目前所處的 windows 會以星號(*)標示,以這個例子來說目前就是處於編號 2 的 window 中,正在執行 top 程式。

每一個 window 視窗都可以分割成多個 panes,每一個 pane 都是各自獨立的 shell,可以個別進行不同的工作,例如一邊使用 Vim 寫程式,另外一邊在 shell 中編譯、執行程式等。

Panes(分割視窗)

在 tmux 的環境中,若想要將 window 視窗分割成多個 pane,並管理建立的 panes,可以使用以下的操作組合鍵:

組合鍵 說明
Ctrl+b 再輸入 % 垂直分割視窗。
Ctrl+b 再輸入 " 水平分割視窗。
Ctrl+b 再輸入 o 以輪流方式輪流切換 pane。
Ctrl+b 再輸入 方向鍵 切換至指定方向的 pane。
Ctrl+b 再輸入 空白鍵 切換佈局。
Ctrl+b 再輸入 ! 將目前的 pane 抽出來,獨立建立一個 window 視窗。
Ctrl+b 再輸入 x 關閉目前的 pane。

Windows

若要建立與管理多個 windows 視窗,可以使用以下的操作組合鍵:

組合鍵 說明
Ctrl+b 再輸入 c 建立新 window 視窗(create)。
Ctrl+b 再輸入 w 以視覺化選單切換 window 視窗(很好用)。
Ctrl+b 再輸入 n 切換至下一個 window 視窗(next)。
Ctrl+b 再輸入 p 切換至上一個 window 視窗(previous)。
Ctrl+b 再輸入 數字鍵 切換至指定的 window 視窗。
Ctrl+b 再輸入 & 關閉目前的 window 視窗。

在切換視窗時,如果不清楚每個視窗的內容,非常推薦使用 Ctrl+b 再輸入 w 的方式,以選單配合預覽的方式選擇視窗。

以視覺化選單切換 Window 視窗

以視覺化選單切換 Window 視窗

Sessions

每執行一個 tmux 就會建立一個 session,若要列出目前所有的 sessions,可以執行:

# 列出所有 Sessions
tmux ls
0: 5 windows (created Wed Dec  4 10:02:22 2019)
1: 1 windows (created Wed Dec  4 10:12:14 2019)

若要繼續使用指定的 session,可以使用 attach 並指定要續用的 session 編號:

# 繼續使用第 0 個 Sessions
tmux attach -t 0

而在 tmux 環境下,可以利用以下的操作組合鍵來操作 sessions:

組合鍵 說明
Ctrl+b 再輸入 $ 重新命名目前的 session。
Ctrl+b 再輸入 d 分離目前的 session(detach),離開 tmux 環境。
Ctrl+b 再輸入 s 以視覺化選單切換 session(select,很好用)。
Ctrl+b 再輸入 L 切換至上一個使用過的 session。
Ctrl+b 再輸入 ( 切換至上一個 session。
Ctrl+b 再輸入 ) 切換至下一個 session。

在 tmux 環境之下切換 session 的時候,使用 Ctrl+b 再輸入 s 的方式,可以快速預覽每個 session 並選擇需要的 session。

以視覺化選單切換 Session

以視覺化選單切換 Session

搜尋功能

組合鍵 說明
Ctrl+b 再輸入 f 在所有 window 視窗中搜尋關鍵字(很好用)。

搜尋功能是一項很好用的功能,他可以讓我們在多 window 視窗中搜尋指定的關鍵字,並以選單方式呈現搜尋結果:

搜尋結果

搜尋結果

tmux 還有很多進階的功能,詳細的用法可以參考 tmux 的線上手冊:

man tmux