命令列的典型使用方式是,開啟一個終端視窗(terminal window,以下簡稱"視窗"),在裡面輸入命令。使用者與計算機的這種臨時的互動,稱為一次"對談"(session) 。
對談的一個重要特點是,視窗與其中啟動的程序是連在一起的。開啟視窗,對談開始;關閉視窗,對談結束,對談內部的程序也會隨之終止,不管有沒有執行完。
Tmux 就是對談與視窗的"解綁"工具,將它們徹底分離。
# Ubuntu 或 Debian
$ sudo apt-get install tmux
# CentOS 或 Fedora
$ sudo yum install tmux
# Mac
$ brew install tmux
安裝完成後,鍵入tmux
命令,就進入了 Tmux 視窗。
上面命令會啟動 Tmux 視窗,底部有一個狀態列。狀態列的左側是視窗資訊(編號和名稱),右側是系統資訊。
按下Ctrl+d
或者顯示輸入exit
命令,就可以退出 Tmux 視窗。
$ exit
Tmux 視窗有大量的快捷鍵。所有快捷鍵都要通過字首鍵喚起。預設的字首鍵是Ctrl+b
,即先按下Ctrl+b
,快捷鍵才會生效。
舉例來說,幫助命令的快捷鍵是Ctrl+b ?
。它的用法是,在 Tmux 視窗中,先按下Ctrl+b
,再按下?
,就會顯示幫助資訊。
然後,按下 ESC 鍵或q
鍵,就可以退出幫助。
第一個啟動的 Tmux 視窗,編號是0
,第二個視窗的編號是1
,以此類推。這些視窗對應的對談,就是 0 號對談、1 號對談。
使用編號區分對談,不太直觀,更好的方法是為對談起名。
$ tmux new -s <session-name>
上面命令新建一個指定名稱的對談。
在 Tmux 視窗中,按下Ctrl+b d
或者輸入tmux detach
命令,就會將當前對談與視窗分離。
與Ctrl+d的區別:Ctrl+d是結束當前對談,相當於kill;分離是切換到非tmux視窗,對談依然存活。
$ tmux detach
上面命令執行後,就會退出當前 Tmux 視窗,但是對談和裡面的程序仍然在後臺執行。
tmux ls
命令可以檢視當前所有的 Tmux 對談(僅在非tmux視窗生效)
$ tmux ls
tmux attach
命令用於重新接入某個已存在的對談。
# 使用對談編號
$ tmux attach -t 0
# 使用對談名稱
$ tmux attach -t <session-name>
Ctrl+d
可以直接kill當前的對談。tmux kill-session
命令用於殺死指定對談。
# 使用對談編號
$ tmux kill-session -t 0
# 使用對談名稱
$ tmux kill-session -t <session-name>
tmux switch
命令用於切換對談。
# 使用對談編號
$ tmux switch -t 0
# 使用對談名稱
$ tmux switch -t <session-name>
tmux rename-session
命令用於重新命名對談。
$ tmux rename-session -t <old-name> <new-name>
Ctrl+b d:分離當前對談。
Ctrl+b s:列出所有對談。
Ctrl+b $:重新命名當前對談。
綜上所述,以下是 Tmux 的最簡操作流程。
tmux new -s my_session
Ctrl+b d
將對談分離。tmux attach-session -t my_session
Tmux 可以將視窗分成多個窗格(pane),每個窗格執行不同的命令。以下命令都是在 Tmux 視窗中執行。
tmux split-window
命令用來劃分窗格。
# 劃分上下兩個窗格
$ tmux split-window
# 劃分左右兩個窗格
$ tmux split-window -h
tmux select-pane
命令用來移動遊標位置。
# 遊標切換到上方窗格
$ tmux select-pane -U
# 遊標切換到下方窗格
$ tmux select-pane -D
# 遊標切換到左邊窗格
$ tmux select-pane -L
# 遊標切換到右邊窗格
$ tmux select-pane -R
tmux swap-pane
命令用來交換窗格位置。
# 當前窗格上移
$ tmux swap-pane -U
# 當前窗格下移
$ tmux swap-pane -D
Ctrl+b %
:劃分左右兩個窗格。Ctrl+b "
:劃分上下兩個窗格。Ctrl+b <arrow key>
:遊標切換到其他窗格。<arrow key>
是指向要切換到的窗格的方向鍵,比如切換到下方窗格,就按方向鍵↓
。Ctrl+b ;
:遊標切換到上一個窗格。Ctrl+b o
:遊標切換到下一個窗格。Ctrl+b {
:當前窗格與上一個窗格交換位置。Ctrl+b }
:當前窗格與下一個窗格交換位置。Ctrl+b Ctrl+o
:所有窗格向前移動一個位置,第一個窗格變成最後一個窗格。Ctrl+b Alt+o
:所有窗格向後移動一個位置,最後一個窗格變成第一個窗格。Ctrl+b x
:關閉當前窗格。Ctrl+b !
:將當前窗格拆分為一個獨立視窗。Ctrl+b z
:當前窗格全螢幕顯示,再使用一次會變回原來大小。Ctrl+b Ctrl+<arrow key>
:按箭頭方向調整窗格大小。Ctrl+b q
:顯示窗格編號。除了將一個視窗劃分成多個窗格,Tmux 也允許新建多個視窗。
tmux new-window
命令用來建立新視窗
$ tmux new-window
# 新建一個指定名稱的視窗
$ tmux new-window -n <window-name>
檢視當前是在哪個視窗,主要是看狀態列中,*
號在哪個視窗的名稱後邊
$ tmux rename-window <new-name>
下面是一些視窗操作的快捷鍵。
Ctrl+b c
:建立一個新視窗,狀態列會顯示多個視窗的資訊。Ctrl+b p
:切換到上一個視窗(按照狀態列上的順序)。Ctrl+b n
:切換到下一個視窗。Ctrl+b <number>
:切換到指定編號的視窗,其中的<number>
是狀態列上的視窗編號。Ctrl+b w
:從列表中選擇視窗。Ctrl+b ,
:視窗重新命名。# 列出所有快捷鍵,及其對應的 Tmux 命令
$ tmux list-keys
# 列出所有 Tmux 命令及其引數
$ tmux list-commands
# 列出當前所有 Tmux 對談的資訊
$ tmux info
# 重新載入當前的 Tmux 設定
$ tmux source-file ~/.tmux.conf
Tmux的介紹就到這了
您的關注,是我的創作動力!
公眾號 @生活處處有BUG