【Tool】tmux
📦 tmux 簡易說明
tmux(Terminal Multiplexer)是一個強大的終端複用工具,可以在單一終端視窗中同時管理多個工作階段(sessions)、視窗(windows)、與窗格(panes)。
🚀 tmux 的核心概念
-
Session(工作階段):
-
Window(視窗):
-
Pane(窗格):
安裝 tmux
Ubuntu 安裝 tmux
Ubuntu 官方倉庫提供了 tmux,可直接使用 apt
安裝:
sudo apt update
sudo apt install tmux -y
macOS 安裝 tmux
macOS 用戶可以透過 Homebrew 安裝:
brew install tmux
🔍 更新或移除 tmux
Ubuntu
- 更新:
sudo apt update && sudo apt upgrade tmux
- 移除:
sudo apt remove tmux -y
macOS
- 更新:
brew upgrade tmux
- 移除:
brew uninstall tmux
⌨️ 常用指令快速上手
功能 | 指令 / 快捷鍵 | 說明 |
---|---|---|
session | ||
啟動 tmux | tmux |
開啟一個新的 tmux session |
tmux new -s 名稱 |
開啟一個新的 tmux session 使用自訂名稱 | |
查看所有 session | tmux ls |
列出目前所有 tmux session |
切換 session | Ctrl-b s |
圖形化切換session (如果該session 內有多視窗,可按 -> 選擇換到該視窗) |
離開 tmux(保持運行) | Ctrl-b d |
分離 session,回到原本終端 |
離開 tmux(結束此session) | Ctrl-b x |
結束目前session,回到原本終端 |
重新連接 session | tmux attach -t 名稱 |
重新連接到未結束的 session |
tmux a |
重新連接上次中斷seeion | |
刪除 session |
|
刪除指定名稱session |
刪除所有 session |
|
|
重新命名 session | Ctrl-b $ |
當前session 改名 |
tmux rename-session -t 舊名稱 新名稱 |
修改指令 session 名稱 | |
window | ||
建立新視窗 | Ctrl-b c |
建立一個新的視窗 |
切換視窗 | Ctrl-b w |
圖形化切換window |
Ctrl-b 視窗編號 |
||
Ctrl-b n / p |
切換到下一個/上一個視窗 | |
關閉視窗 | Ctrl-b & |
關閉當前視窗 |
重新命名 window | Ctrl-b , |
更名目前window |
tmux rename-window -t 舊名稱 新名稱 |
更名指定window | |
Pane | ||
分割窗格(垂直) | Ctrl-b " |
垂直分割出新窗格 |
分割窗格(水平) | Ctrl-b % |
水平分割出新窗格 |
切換窗格 | Ctrl-b 方向鍵 |
在窗格間切換 |
vi ~/.tmux.conf 加入set -g mouse on |
使用滑鼠切換 使用滑鼠調整分割線 |
|
關閉窗格 | Ctrl-b x |
|
與上一格窗格互換 | Ctrl-b { |
|
與下一格窗格互換 | Ctrl-b } |
|
顯示窗格編號 | Ctrl-b q |
|
指定窗格互換 | tmux swap-pane -s 1 -t 2 |
|
其他 | ||
命令模式 | Ctrl-b : |
進入命令模式,可執行 tmux 指令 |
配置設定檔 |
vi ~/.tmux.conf set -g mouse on :支持滑鼠 set -g prefix C-s :ctrl + b前缀改成ctrl + s |
當滑鼠模式關閉(set -g mouse off)時,作業系統提供的標準複製/貼上功能將如預期運作。
但滑鼠模式開啟(set -g mouse on)時,剪貼簿的功能會造成失效
下面的程式碼可以新增到您的 .tmux.conf 檔案中,以將m和M鍵分別綁定到「滑鼠開啟」和「滑鼠關閉」。
這讓你能夠使用Ctrl+ B,m來開啟滑鼠支援;Ctrl+ B,M將其關閉。
vi ~/.tmux.conf
###############################################
# toggle mouse mode to allow mouse copy/paste
# set mouse on with prefix m
bind m \
set -g mouse on \;\
display 'Mouse: ON'
# set mouse off with prefix M
bind M \
set -g mouse off \;\
display 'Mouse: OFF'
🎯 常見使用情境
- 遠端連線不中斷: 即使 SSH 斷線,tmux session 仍會在伺服器上持續運行。
- 多任務同時進行: 在一個終端視窗內同時監控多個任務、Log 或服務狀態。
- 自動化腳本執行: 方便長時間執行的任務或背景作業管理。
常見問題
已在某session 內要新建session
或是要切換到另一個session
這代表 你已經在一個 tmux session 裡,然後又試圖附加(attach)到另一個 session。tmux 預設不建議這種「嵌套 session」的行為,因為可能會導致控制鍵衝突或混亂。
建議方式:
建立session:離開tmux 模式Ctrl-b d
,在建立新的session : tmux
or tmux new -s 名稱
切換session: Ctrl-b s
切換 or tmux switch-client -t 名稱
以下是 tmux 快速鍵表格:
快速鍵 | 功能說明 |
---|---|
C-b Space | 選擇下一個佈局 |
C-b ! | 將窗格分離到新視窗 |
C-b " | 垂直分割視窗 |
C-b # | 列出所有剪貼簿 |
C-b $ | 重新命名當前工作階段 |
C-b % | 水平分割視窗 |
C-b & | 關閉當前視窗 |
C-b ' | 輸入視窗索引以切換 |
C-b ( | 切換到上一個客戶端 |
C-b ) | 切換到下一個客戶端 |
C-b , | 重新命名當前視窗 |
C-b - | 刪除最近的剪貼簿 |
C-b . | 移動當前視窗 |
C-b / | 顯示按鍵綁定說明 |
C-b 0~9 | 選擇對應編號的視窗 |
C-b : | 輸入命令提示符 |
C-b ; | 切換到上次使用的窗格 |
C-b = | 從清單中選擇剪貼簿 |
C-b ? | 列出所有按鍵綁定 |
C-b C | 自訂選項 |
C-b D | 從清單中選擇並分離客戶端 |
C-b E | 平均分配所有窗格 |
C-b L | 切換到最後一個客戶端 |
C-b M | 清除標記的窗格 |
C-b [ | 進入複製模式 |
C-b ] | 貼上最近的剪貼簿 |
C-b c | 建立新視窗 |
C-b d | 分離當前客戶端 |
C-b f | 搜尋窗格 |
C-b i | 顯示視窗資訊 |
C-b l | 切換到上個視窗 |
C-b m | 標記或取消標記窗格 |
C-b n | 選擇下一個視窗 |
C-b o | 選擇下一個窗格 |
C-b p | 選擇上一個視窗 |
C-b q | 顯示窗格編號 |
C-b r | 重新整理當前客戶端 |
C-b s | 從清單中選擇工作階段 |
C-b t | 顯示時鐘 |
C-b w | 從清單中選擇視窗 |
C-b x | 關閉當前窗格 |
C-b z | 放大/還原當前窗格 |
C-b { | 與上方窗格交換位置 |
C-b } | 與下方窗格交換位置 |
C-b ~ | 顯示訊息 |
C-b DC | 重置視窗以跟隨游標 |
C-b PPage | 進入複製模式並向上捲動 |
C-b ↑/↓/←/→ | 選擇相對方向的窗格 |
C-b M-1~M-7 | 設定不同的視窗佈局 |
C-b M-n | 選擇下一個有警示的視窗 |
C-b M-o | 反向循環切換窗格 |
C-b M-p | 選擇上一個有警示的視窗 |
C-b M-↑/↓/←/→ | 調整窗格大小 (每次5個單位) |
C-b C-b | 傳送前綴鍵 |
C-b C-o | 循環切換窗格 |
C-b C-z | 暫停當前客戶端 |
C-b C-↑/↓/←/→ | 調整窗格大小 |
C-b S-↑/↓/←/→ | 移動視窗的可見部分 |
Reference