Tmux 是一個用於在終端窗口中運行多個終端會話的工具,即終端複用軟件(terminal multiplexer)。在 Tmux 中能夠根據不一樣的工做任務建立不一樣的會話,每一個會話又能夠建立多個窗口來完成不一樣的工做,每一個窗口又能夠分割成不少小窗口。這些功能都是很是實用的。html
Tmux 的多窗口和窗口分割並非它吸引的我緣由,對於這一點我能夠有另一個終端工具代替,即 Terminator。使用 Tmux 最大的益處在於,遠程 SSH 訪問服務器進行工做時。即便非正常掉線,它能保存當前工做狀態,並保證當前任務繼續運行。這一點對於遠程 SSH 工做的人來講是很是重要的。遠程 ssh 工做時,Tmux 的多會話、多窗口、多面板的益處才充分體現了出來。使用 Tmux 就沒必要開啓多個標籤鏈接多個 ssh 了,全部工做在一個 ssh 鏈接上就搞定了,也沒必要擔憂忽然掉線後工做丟失。git
與 Tmux 相似的軟件還有 screen、dvtm、splitvt、byobu 等。github
根據 Tmux 的定義,在開啓了 Tmux 服務器後,會首先建立一個會話,而這個會話則會首先建立一個窗口,其中僅包含一個窗格;也就是說,這裏看到的所謂終端控制檯應該稱做 Tmux 的一個窗格,雖然其使用方法與終端控制檯徹底相同。vim
Tmux 使用 C/S 模型構建,主要包括如下單元模塊:windows
tmux
命令時就開啓了一個服務器,服務器因爲管理多個會話。會話,窗口和窗格是 Tmux 的基本概念,在使用 Tmux 以前必需要理解他們的含義。緩存
在 Mac OS 中安裝:服務器
$ brew install tmuxsession
在 Ubuntu 中安裝:ssh
sudo apt-get install tmuxide
或者下載源碼編譯安裝:https://tmux.github.io/
對 Tmux 的操做都是用命令或者快捷鍵來完成的,在使用 Tmux 快捷鍵時都須要加上一個命令前綴(prefix),即 Ctrl+b
。快捷鍵的使用方法是,按下組合鍵 Ctrl-b
,接着放開組合鍵 Ctrl-b
,接着再按相關的快捷鍵。若是你以爲 Ctrl+b
使用起來不方便,能夠重定義命令前綴,在配置文件 ~/.tmux.conf
中添加以下內容:
# remap prefix from 'C-b' to 'C-a' unbind C-b set -g prefix C-a bind-key C-a send-prefix
運行 tmux 命令直接新建一會話,並進入:
tmux
每個會話都有一個編號或者名字,用於在會話間切換或者從新鏈接會話。可是記住每一個會話的編號並不容易,固然,咱們在新建會話時能夠指定一個名字,以便於記憶:
tmux new -s mysession
或者:
tmux new-session -s mysession
使用快捷鍵 prefix + d
能夠暫時離開當前會話,若是要再次鏈接之前的某個會話,能夠用以下命令:
tmux attach -t <session-name>
或者:
tmux attach-session -t <session-name>
或者簡寫成:
tmux a -t <session-name>
要殺掉會話,能夠用以下命令:
tmux kill-session -t <session-name>
或者殺死全部會話:
tmux kill-server
信息查詢:
會話控制:
窗口控制:
窗格控制:
全部快捷鍵的使用都必須加上命令前綴(prefix), 默認是 Ctrl+b
。
命令 | 說明 |
---|---|
? | 列出全部快捷鍵;按q返回 |
d | 脫離當前會話,可暫時返回Shell界面 |
s | 選擇並切換會話;在同時開啓了多個會話時使用 |
D | 選擇要脫離的會話;在同時開啓了多個會話時使用 |
: | 進入命令行模式;此時可輸入支持的命令,例如 kill-server 關閉全部tmux會話 |
[ | 複製模式,光標移動到複製內容位置,空格鍵開始,方向鍵選擇複製,回車確認,q/Esc退出 |
] | 進入粘貼模式,粘貼以前複製的內容,按q/Esc退出 |
~ | 列出提示信息緩存;其中包含了以前tmux返回的各類提示信息 |
t | 顯示當前的時間 |
命令 | 說明 |
---|---|
c | 建立新窗口 |
& | 關閉當前窗口 |
[0-9] | 數字鍵切換到指定窗口 |
p | 切換至上一窗口 |
n | 切換至下一窗口 |
l | 先後窗口間互相切換 |
w | 經過窗口列表切換窗口 |
, | 重命名當前窗口,便於識別 |
. | 修改當前窗口編號,至關於從新排序 |
f | 在全部窗口中查找關鍵詞,便於窗口多了切換 |
命令 | 說明 |
---|---|
" | 將當前面板上下分屏 |
% | 將當前面板左右分屏 |
x | 關閉當前分屏 |
! | 將當前面板置於新窗口,即新建一個窗口,其中僅包含當前面板 |
q | 顯示面板編號 |
o | 選擇當前窗口中下一個面板 |
{ | 向前置換當前面板 |
} | 向後置換當前面板 |
z | 最大化當前所在面板 |
方向鍵 | 移動光標選擇對應面板 |
page up | 向上滾動屏幕,q 退出 |
page down | 向下滾動屏幕,q 退出 |
alt+o | 逆時針旋轉當前窗口的面板 |
ctrl+o | 順時針旋轉當前窗口的面板 |
ctrl+方向鍵 | 以1個單元格爲單位移動邊緣以調整當前面板大小 |
alt+方向鍵 | 以5個單元格爲單位移動邊緣以調整當前面板大小 |
Tmux 的使用相似於 vim, 在窗口中要自由的複製文本,能夠進入複製模式,使用 prefix + [
進入複製模式:
prefix + ]
粘貼Tmux 支持自定義的配置文件,/etc/tmux.conf
是全局的配置,~/.tmux.conf
是用戶配置。例如 Tmux 也能夠想 vim 同樣使用底行命令模式,咱們從新配置其快捷鍵跟 vim 同樣使用 :
,在配置文件中添加以下內容:
# bind : to command-prompt like vim # this is the default in tmux already bind : command-prompt
在命令行模式下能夠輸入 tmux 的命令來執行相關動做。