WHY
使用Tmux有很多好處。我最看重的是,
- 遠端伺服器上持久地儲存工作狀態。比如,我在本地或伺服器做某項工作,需要在
Terminal
開啟幾個視窗。每次換工作,還需要切換。用Tmux
,便可以按照Session
進行管理,每次輕鬆開啟切換。 - 隨時隨地斷開或連線
Session
。比如,在伺服器上面執行一條命令,但是擔心連線斷開後命令終止,此時在tmux中執行命令,此時斷閘道器機便問題不大,只需隨後恢復Session便可以
。
Install
伺服器上需要根據具體作業系統安裝,包管理一般支援。若不支援,請參考GitHub - tmux/tmux: tmux source code。 Mac上只需如下命令:
brew install tmux
複製程式碼
Config
Tmux
預設不支援滑鼠滾動檢視視窗中的前後內容。需要修改配置來支援。
touch ~/.tmux.conf
# 開啟滑鼠模式
set-option -g mouse on
# 允許滑鼠選擇窗格
# set -g mouse-select-pane on
# 如果喜歡給視窗自定義命名,那麼需要關閉視窗的自動命名
set-option -g allow-rename off
# 如果對 vim 比較熟悉,可以將 copy mode 的快捷鍵換成 vi 模式
set-window-option -g mode-keys vi
複製程式碼
如果對滑鼠滾動效果依舊不滿意,可以參考這篇blog:Better mouse scrolling in Tmux
Conception
tmux
的主要元素分為三層:
- Session 一組視窗的集合,通常用來概括同一個任務。session可以有自己的名字便於任務之間的切換。
- Window 單個可見視窗。Windows有自己的編號,也可以認為和ITerm2中的Tab類似。
- Pane 窗格,被劃分成小塊的視窗,類似於Vim中 C-w +v 後的效果。 一圖以蔽之:
Session
Tmux
為了防止與全域性快捷鍵衝突,大部分快捷鍵需要先需要輸入字首Ctrl + b
,下文用Prefix
代替。
Session主要相關命令如下:
# 建立
tmux new # 不指定session name
tmux new -s [session-name]
# 刪除Session
tmux kill-session -t [session-name]
tmux kill-server
# 列出當前Session
tmux ls #
Prefix s # tmux 內
# 恢復Session
tmux a -t [session-name]
tmux a
# 斷開Session
tmux detach
Prefix d
# 重新命名Session
Prefix $
複製程式碼
Window
# 建立
Prefix c
# 選擇視窗
Prefix + [number] # 選擇第n個視窗
Prefix + p/n # 前/後一個視窗
# 關閉視窗
Prefix &
exit
# 列出所有window(包含其他Session)
Prefix w
j/k # 前後選擇
# 搜尋視窗
Prefix f
# 重新命名當前視窗
Prefix ,
複製程式碼
Pane
# 建立
Prefix % # 水平窗格
Prefix '"' # 垂直窗格
# 關閉
Prefix x
# 切換
Prefix o # 在窗格間切換
Prefix q # 顯示窗格編號,輸入編號切換
# 將當前窗格切換到新視窗
Prefix !
# 窗格交換位置
Prefix + {/}
複製程式碼