Login

Navigation

This articles is published 1073 days ago and last updated 493 days ago, some information may be out of date.

tmux - 多個終端管理工具

tmux_cover.png

簡言: 
tmux是多個終端管理器。它使您可以在一個終端中建立多個程序終端及可以相互之間切換,分離(程序仍然在後台繼續運行)。

安裝:
'Ubuntu 安裝 tmux'
sudo apt update && sudo apt install tmux -y

使用:

TMUX_02.PNG

根據圖示很好地理解tmux的層級結構

輸入tmux即可建立一個新的 session,在新的session中預設有一個新的windows視窗,而在windows視窗可以分割成多個 panes

TMUX_03.JPG


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。

Panes Size(調整分割視窗尺寸)
組合鍵說明
Ctrl+b 再按下Alt+方向鍵調整視窗上下左右調整分割的視窗大小。

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 視窗。

Sessions
每執行一次 tmux 就會新建一個 session

如要列出目前所有的 sessions

tmux ls
0: 1 windows (created Thu May 20 03:28:07 2021) (attached)
4: 1 windows (created Thu May 20 04:02:53 2021)

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

TMUX_04.JPG

常用指令:
新增
tmux
新增session自定名稱
tmux new -s <your_session_name>
session 列表
tmux ls
重新連線 session
tmux a -t 0
重新連線 指定session名稱
tmux a -t <session_name>
刪除 session
tmux kill-session -t 0
刪除指定session
tmux kill-session -t <session_name>
刪除全部session
tmux kill-session -a > 全部
刪除 tmux server
tmux kill-server
重新命名 session
tmux rename-session -t 0 <new_session_name>

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。

TMUX_05.JPG

Tmux的個性化設定:

啟用Tmux的256色彩支援

echo 'set -g default-terminal "screen-256color"' >>   ~/.tmux.conf

啟用在Tmux 的鼠標滾動模式

開啟新的tmux就可以透過tmux往回滾動查看歷史記錄。
echo "set -g mouse on" >>  ~/.tmux.conf
也可以手動啟用, 按 Ctrl + B 鍵,然後按“ [ 或者 ] ”鍵。例如向上/向下箭頭、Page up/Page down等。

當用戶完成滾動時,他可以通過按 Q 鍵退出 Tmux 的滾動模式。

在 Tmux 的鼠标滾動模式下复制一个项目

如果需要在單個Pane內複製內容,需要啟用這功能,選取已是複製。
vim  ~/.tmux.conf
set -g mouse on
bind -n WheelUpPane {
if -F '#{==:#{window_name},nvim}' {
send-keys -M
} {
copy-mode -e
}
}

結語:
我是在編譯OpenWrt固件時留意到tmux的優點,通常需要SSH進入到編譯主機內進行, 在編譯的進程中不能關閉SSH視窗(編譯的過程是漫長),而tmux就很方便地解決這問題。

參考:

Linux tmux 終端機管理工具使用教學
How to scroll up and down in Tmux