Tmux 終端機多工管理:打造高效開發工作流
Tmux 終端機多工管理:打造高效開發工作流
Tmux(Terminal Multiplexer)讓你在一個終端機視窗中管理多個工作階段,就算 SSH 連線中斷,執行中的程式也不會停止。對於經常需要同時處理多個任務的開發者來說,Tmux 幾乎是必備工具。
安裝
# macOS
brew install tmux
# Ubuntu/Debian
sudo apt install tmux
# 確認版本
tmux -V核心概念
Tmux 的三層結構:
- Session(工作階段):最高層,可以有多個 window
- Window(視窗):類似瀏覽器分頁,每個 session 可有多個
- Pane(窗格):每個 window 可以分割成多個 pane
基本操作
預設的 prefix key 是 Ctrl+b,所有 tmux 快捷鍵都需要先按 prefix。
# Session 操作
tmux # 建立新 session
tmux new -s myproject # 建立有名稱的 session
tmux ls # 列出所有 session
tmux attach -t myproject # 重新連接到 session
tmux kill-session -t myproject # 刪除 session
# 在 tmux 內
Ctrl+b d # detach(離開但不關閉)
Ctrl+b $ # 重新命名 sessionWindow 操作
Ctrl+b c # 建立新 window
Ctrl+b , # 重新命名 window
Ctrl+b n # 下一個 window
Ctrl+b p # 上一個 window
Ctrl+b 0-9 # 切換到指定編號的 window
Ctrl+b w # 顯示所有 window 列表
Ctrl+b & # 關閉目前 windowPane 操作
Ctrl+b % # 垂直分割(左右)
Ctrl+b " # 水平分割(上下)
Ctrl+b 方向鍵 # 切換 pane
Ctrl+b z # 最大化/還原目前 pane
Ctrl+b x # 關閉目前 pane
Ctrl+b { # 交換 pane 到前一個位置
Ctrl+b } # 交換 pane 到下一個位置
Ctrl+b Ctrl+方向鍵 # 調整 pane 大小自訂 .tmux.conf
# ~/.tmux.conf
# 把 prefix 改成 Ctrl+a(更順手)
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# 用 vim 風格的按鍵切換 pane
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# 更直覺的分割快捷鍵
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# 保留當前目錄
bind c new-window -c "#{pane_current_path}"
# 滑鼠支援
set -g mouse on
# 增加 history 上限
set -g history-limit 50000
# 減少 ESC 延遲(對 Vim 使用者重要)
set -sg escape-time 0
# 256 色支援
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"
# 狀態列美化
set -g status-style bg=colour235,fg=colour136
set -g status-left ""
set -g status-right "#{session_name} | %H:%M"
set -g window-status-current-style fg=colour166,bold
# 使用 r 快速 reload 設定
bind r source-file ~/.tmux.conf \; display "設定已重載!"複製模式(Copy Mode)
Ctrl+b [ # 進入複製模式
# 在複製模式中(預設 emacs 風格)
Ctrl+Space # 開始選取
Ctrl+w # 複製選取範圍
Ctrl+b ] # 貼上
# 使用 vi 風格(推薦)
# 在 .tmux.conf 中加入:
# setw -g mode-keys vi
# 然後可以用 v 開始選取、y 複製工作場景配置腳本
#!/bin/bash
# dev-session.sh:一鍵建立開發環境
SESSION="myproject"
# 如果 session 已存在就 attach
tmux has-session -t $SESSION 2>/dev/null
if [ $? -eq 0 ]; then
tmux attach -t $SESSION
exit 0
fi
# 建立新 session
tmux new-session -d -s $SESSION -n "editor"
# Window 1: 編輯器
tmux send-keys -t $SESSION:0 "cd ~/projects/myapp && nvim" Enter
# Window 2: 開發伺服器(上下分割)
tmux new-window -t $SESSION -n "server"
tmux send-keys -t $SESSION:1 "cd ~/projects/myapp && npm run dev" Enter
tmux split-window -t $SESSION:1 -v
tmux send-keys -t $SESSION:1.1 "cd ~/projects/myapp && npm run db:studio" Enter
# Window 3: Git 和終端機
tmux new-window -t $SESSION -n "terminal"
tmux send-keys -t $SESSION:2 "cd ~/projects/myapp && git log --oneline -10" Enter
# 切換到第一個 window
tmux select-window -t $SESSION:0
tmux attach -t $SESSION搭配 Tmuxinator
gem install tmuxinator
# 建立專案設定
tmuxinator new myproject# ~/.config/tmuxinator/myproject.yml
name: myproject
root: ~/projects/myproject
windows:
- editor:
layout: main-vertical
panes:
- nvim .
- git status
- server:
panes:
- npm run dev
- npm run db:studio
- misc:
panes:
- 'tmuxinator start myproject一旦習慣了 Tmux 的工作流程,你會很難想像沒有它的開發體驗。建議先掌握最基本的操作,再逐步自訂設定,找到最適合自己的工作方式。
分享這篇文章