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 + {/}