tmux 是一個運作于 OS X 和 Unix 上的終端分屏軟體 terminal multiplexer。
快捷鍵的表示及按鍵規則
-
: 同時按下CTRL-b
鍵和CTRL
鍵b
-
: 同時按下CTRL-R
、CTRL
和SHIFT
鍵r
-
: 同時按下CTRL-b d
鍵和CTRL
鍵,再松開,然後再迅速按下b
鍵d
安裝
在 OS X 上:
$ brew install tmux
在 Debian 和 Ubuntu 上:
$ sudo apt-get install tmux
确定是否安裝成功:
$ tmux -V
開啟 tmux
開啟 tmux 隻需輸入指令:
$ tmux
執行後會打開一個 tmux 會話,和普通的終端會話一樣,可以在裡面輸入和執行任何指令。
要想從該 tmux 會話中退回到普通的終端,輸入指令:
$ exit
以上的使用方式用處不大,應該使用 “命名會話”。
建立命名會話
一台機器上可以有多個會話,要使各會話組織有序,應對其命名。
建立一個命名為 basic 的會話:
$ tmux new-session -s basic
也可以用簡寫的指令:
$ tmux new -s basic
脫離和關聯會話
tmux 是一個 CS 模式的程式,當開啟一個 tmux 會話時,會話就是一個伺服器。所有在該會話環境中開啟的程式和程序都由這個會話伺服器管理。當你與該會話 “脫離” 時,由于會話還沒有結束,這些開啟的程式和程序都會在背景繼續運作。之後,我們可以重新 “關聯” 該會話,繼續之前的工作。
示例:
先建立一個命名會話:
$ tmux new -s basic
在該會話中,開啟一個 top 指令:
$ top
然後使用快捷鍵
CTRL-b d
從目前會話中脫離出來,脫離後,會回到普通的終端中。
CTRL-b d
快捷鍵的正确按法是:先同時按下
CTRL
鍵和
b
鍵作為 tmux 指令的字首,再全部松開按鍵,然後迅速按下代表 tmux 指令的
d
鍵,将 d 指令發送給 tmux。
指令字首
tmux 的預設指令字首是
CTRL-b
,記為
PREFIX
,可以對該設定進行再綁定。
重新關聯到現有的會話
列出目前機器上的全部會話:
$ tmux list-sessions
也可以用簡寫指令:
$ tmux ls
該指令會顯示目前隻有一個會話:
basic: 1 windows (created Sat Jul 30 09:48:32 2016) [80x23]
要想關聯現有的會話,如果隻有一個會話的話,直接:
$ tmux attach
先用
PREFIX d
從目前會話脫離,再建立一個新的會話但不自動關聯:
tmux new -s second_session -d
此時羅列會話指令會出來有兩個會話:
tmux ls
basic: 1 windows (created Sat Jul 30 09:48:32 2016) [80x23]
second_session: 1 windows (created Sat Jul 30 09:52:31 2016) [80x23]
可以用
-t
(target?) 選項來指定關聯的會話:
$ tmux attach -t second_session
關閉會話
在 tmux 會話内部,可以用
exit
指令直接銷毀和退出目前會話。在普通終端下也可以用
kill-session
進行:
$ tmux kill-session -t basic
$ tmux kill-session -t second_session
如果某個會話中有僵死的程式,可以用這個方法來關閉整個會話。
多視窗操作
在一個 tmux 會話中可以同時運作多個程式,tmux 在會話中可以使用多視窗對多個程式進行有序組織和管理。
當開啟一個會話時,會自動建立一個初始視窗,之後,在會話中可以再建立更多的視窗。
建立一個命名為 windows 的會話,并将第一個(預設)視窗命名為 shell:
$ tmux new -s windows -n shell
在會話中建立一個新視窗
在會話中,使用快捷鍵
PREFIX c
建立一個新的視窗。并在該視窗中運作
top
指令。注意到,該視窗的名稱是基于運作的程式而動态變化的。為友善管理,應對其顯式命名,方法是在使用快捷鍵
PREFIX ,
後,在狀态欄中輸入名稱,如 Processes。
在會話中的視窗間切換
目前焦點視窗的視窗名上會有一個
*
号。視窗切換可以用以下快捷鍵:
-
: 移到下一個(可往複循環)PREFIX n
-
: 移到上一個(可往複循環)PREFIX p
-
: 直接移到某編号的視窗,如PREFIX 編号
PREFIX 0
-
: 根據視窗名來定位PREFIX f
-
: 顯示出一個含有所有視窗名稱的清單視窗,供選擇切換PREFIX w
要關閉目前視窗,在視窗中直接運作
exit
指令。也可以用快捷鍵
PREFIX &
,它會在狀态欄進行确認操作。當所有視窗都關閉後,會話也随之關閉。
多窗格操作
一個視窗可以分割成多個窗格。并在每個窗格中運作不同程式。
建立一個新的會話,練習多窗格操作:
$ tmux new -s panes
窗格分割快捷鍵:
-
: 水準平均分割PREFIX %
-
: 垂直平均分割PREFIX "
在各窗格間切換焦點,用快捷鍵
PREFIX o
,也可以用
PREFIX 方向鍵
進行切換。
窗格布局模闆
内置的幾種布局模闆:
- even-horizontal: 從左到右水準平均布局
- even-vertical: 從上到下垂直平均布局
- main-horizontal: 上側一個大窗格,其它的在下邊
- main-vertical: 左側一個大窗格,其它的在右邊
- tiled: 所有窗格在螢幕上平均布局
可以用快捷鍵
PREFIX SPACEBAR
依次在各布局模闆間切換。
關閉窗格
用快捷鍵
PREFIX x
。
使用指令模式
目前使用的快捷鍵都是 tmux 指令的快捷鍵。tmux 指令即可以在終端指令行中運作,也可以和 VI 類似,在指令模式下的狀态行中運作。
在會話中,進入指令模式用快捷鍵
PREFIX :
, 此時,可以在狀态欄中運作相應的 tmux 指令,如建立一個命名為 console 的新視窗:
new-window -n console
。
建立一個命名視窗,同時執行 “top” 指令:
new-window -n processes "top"
,這樣建立的視窗當視窗中的指令執行完畢後,視窗會自動關閉。
總結
快捷鍵
PREFIX ?
列出所有的快捷鍵。
建立會話的指令:
指令 | 描述
----------------------------|
tmux new-session | 建立一個匿名會話,可以簡寫為
tmux new
或直接
tmux
tmux new -s devel | 建立一個命名為 “devel” 的會話
tmux new -s devel -n editor | 建立一個名稱為 “devel” 的會話,且将第一個視窗命名為 “editor”
tmux attach -t devel | 關聯到名為 “devel” 的會話
關于會話、視窗、窗格的預設指令
指令 | 描述
-------------|
PREFIX d | 脫離會話,會話會在背景繼續運作
PREFIX : | 進入指令模式
PREFIX c | 在會話中建立一個新視窗,對應 tmux 指令
new-window
PREFIX 0…9 | 根據視窗編号在視窗中切換
PREFIX w | 顯示出目前會話中所有的視窗,供選擇切換
PREFIX , | 命名目前視窗
PREFIX & | 關閉目前視窗
PREFIX % | 水準平均分割視窗
PREFIX " | 垂直平均分割視窗
PREFIX o | 在多個窗格間循環切換
PREFIX q | 顯示窗格的編号
PREFIX x | 關閉目前窗格
PREFIX SPACE | 在各窗格布局前切換
參考資源:
tmux: Productive Mouse-Free Development