tmux是什么
tmux(terminal multiplexer)是Linux上的終端復(fù)用神器,可從一個屏幕上管理多個終端(準(zhǔn)確說是偽終端)。使用該工具,用戶可以連接或斷開會話,而保持終端在后臺運(yùn)行。類似的工具還有screen,個人對這二者的使用感受是,用過tmux就再也不想用screen了。
tmux基本結(jié)構(gòu)
tmux的結(jié)構(gòu)包括會話(session)、窗口(window)、窗格(pane)三部分,會話實(shí)質(zhì)是偽終端的集合,每個窗格表示一個偽終端,多個窗格展現(xiàn)在一個屏幕上,這一屏幕就叫窗口?;窘Y(jié)構(gòu)及狀態(tài)信息如下圖所示:

tmux基本操作
基本的操作無非就是對會話、窗口、窗格進(jìn)行管理,包括創(chuàng)建、關(guān)閉、重命名、連接、分離、選擇等等。
一般使用命令和快捷鍵進(jìn)行操作,可在系統(tǒng)shell終端和tmux命令模式(類似vim的命令模式)下使用命令,或者在tmux終端使用快捷鍵。
tmux默認(rèn)的快捷鍵前綴是Ctrl+b(下文用prefix指代),按下前綴組合鍵后松開,再按下命令鍵進(jìn)行快捷操作,比如使用prefix d分離會話(應(yīng)該寫作prefix d而不是prefix+d,因?yàn)?strong>d鍵不需要與prefix同時按下)。
快捷鍵可以自定義,比如將前綴改為Ctrl+a,但需要保留shell默認(rèn)的Ctrl+a快捷鍵,按如下所示修改~/.tmux.conf文件:
<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">1 set-option -g prefix C-a 2 unbind-key C-b 3 bind-key C-a send-prefix 4 bind-key R source-file ~/.tmux.conf ; display-message "~/.tmux.conf reloaded."</pre>
現(xiàn)在已將原先的Ctrl+a用prefix Ctrl+a取代,即需要按兩次Ctrl+a生效。
第4行的作用是使用prefix r重新加載配置文件,并輸出提示,否則需要關(guān)閉會話后配置文件才能生效,也可手動加載配置文件,在tmux終端輸入"prefix :"進(jìn)入命令模式,用source-file命令加載配置文件。
注意,將多個命令寫在一起作為命令序列時,命令之間要用空格和分號分隔。
會話管理
****常用命令****
tmux new 創(chuàng)建默認(rèn)名稱的會話(在tmux命令模式使用new命令可實(shí)現(xiàn)同樣的功能,其他命令同理,后文不再列出tmux終端命令)
tmux new -s mysession 創(chuàng)建名為mysession的會話
tmux ls 顯示會話列表
tmux a 連接上一個會話
tmux a -t mysession 連接指定會話
tmux rename -t s1 s2 重命名會話s1為s2
tmux kill-session 關(guān)閉上次打開的會話
tmux kill-session -t s1 關(guān)閉會話s1
tmux kill-session -a -t s1 關(guān)閉除s1外的所有會話
tmux kill-server 關(guān)閉所有會話
常用快捷鍵
prefix s 列出會話,可進(jìn)行切換
prefix $ 重命名會話
prefix d 分離當(dāng)前會話
prefix**** D 分離指定會話
窗口管理
prefix c 創(chuàng)建一個新窗口
prefix , 重命名當(dāng)前窗口
prefix w 列出所有窗口,可進(jìn)行切換
prefix n 進(jìn)入下一個窗口
prefix p 進(jìn)入上一個窗口
prefix l 進(jìn)入之前操作的窗口
prefix 0~9 選擇編號0~9對應(yīng)的窗口
prefix . 修改當(dāng)前窗口索引編號
prefix ' 切換至指定編號(可大于9)的窗口
prefix f 根據(jù)顯示的內(nèi)容搜索窗格
prefix & 關(guān)閉當(dāng)前窗口
窗格管理
prefix % 水平方向創(chuàng)建窗格
prefix " 垂直方向創(chuàng)建窗格
prefix Up|Down|Left|Right 根據(jù)箭頭方向切換窗格
prefix q 顯示窗格編號
prefix o 順時針切換窗格
prefix } 與下一個窗格交換位置
prefix { 與上一個窗格交換位置
prefix x 關(guān)閉當(dāng)前窗格
prefix space(空格鍵) 重新排列當(dāng)前窗口下的所有窗格
prefix ! 將當(dāng)前窗格置于新窗口
prefix Ctrl+o 逆時針旋轉(zhuǎn)當(dāng)前窗口的窗格
prefix t 在當(dāng)前窗格顯示時間
prefix z 放大當(dāng)前窗格(再次按下將還原)
prefix i 顯示當(dāng)前窗格信息
其他命令
tmux list-key 列出所有綁定的鍵,等同于prefix ?
tmux list-command 列出所有命令
以上為tmux的常見操作,基本可以滿足大部分的工作需求,至于更高端的操作待日后再整理。
參看鏈接:tmux簡明教程