應用場景
當你使用SSH登錄遠程機器,想新開一個或多個Tab的時候,你需要重新執行SSH登錄。
假設你的SSH不是免密登錄,那麼你每次登錄都需要輸入密碼!
再假設你登錄遠程機器需要通過一台或多台跳板機,那麼新開Tab的成本頓時就增加了很多很多很多...
天吶,誰來救救我啊?
答:Tmux
簡單使用
我們先按順序來簡單的使用一下Tmux,然後再具體的介紹她的一些基本概念和常用快捷鍵等。
怎麼打開Tmux?
tmux # 新建一個會話,未指定會話名稱
tmux new -s demo # 新建一個會話,並指定會話名稱為:demo
怎麼退出一個會話?
當你在會話中做一些耗時的操作,想退出但不關閉該會話時,怎麼做呢?
- 直接在命令行中輸入:
tmux detach - 使用快捷鍵
Ctrl+b :,然後輸入detach - 使用快捷鍵
Ctrl+b d(推薦)
當你在會話中做一些即時的操作,想退出且關閉該會話時,怎麼做呢?
- 直接在命令行中輸入:
tmux kill-session - 使用快捷鍵
Ctrl+b :,然後輸入kill-session
怎麼查看會話列表?
當你想查看一下,有那些現存的會話,可以通過以下命令來查看
tmux list-sessions # 列出所有的會話
tmux ls # 別名
怎麼進入一個現存的會話?
當你想進入一個現存的會話,繼續之前的操作,可以使用tmux attach -t session_name命令,別名tmux a -t session_name
tmux a # 默認進入第一個會話
tmux a -t demo # 進入一個名為demo的會話
怎麼在會話中切換到另一個會話?
當你在某個會話中,想直接切換到另一個會話,可以使用tmux switch -t session_name命令
tmux a # 進入第一個會話
tmux switch -t demo # 切換到名為demo的會話
基本概念
Tmux中有幾個概念,分別是Session、Window和Pane,它們之間的關係如下圖所示:
在Tmux服務中,有多個Session,一個Session下有多個Window,一個Window下有多個Pane。
在創建一個Session時,會默認創建一個Window,默認創建一個Pane。
常用快捷鍵
系統指令
| 前綴 | 指令 | 描述 |
|---|---|---|
| Ctrl+b | ? | 顯示快捷鍵幫助文檔 |
| Ctrl+b | d | 退出當前會話 |
| Ctrl+b | D | 選擇退出當前會話 |
| Ctrl+b | Ctrl+z | 掛起當前會話 |
| Ctrl+b | r | 強制重載當前會話 |
| Ctrl+b | s | 顯示會話列表用於選擇並切換 |
| Ctrl+b | : | 進入命令行模式,此時可直接輸入ls等命令 |
| Ctrl+b | [ | 進入複製模式,按q退出 |
| Ctrl+b | ] | 粘貼複製模式中複製的文本 |
| Ctrl+b | ~ | 列出提示信息緩存 |
Window指令
| 前綴 | 指令 | 描述 |
|---|---|---|
| Ctrl+b | c | 新建窗口 |
| Ctrl+b | & | 關閉當前窗口(關閉前需輸入y or n確認) |
| Ctrl+b | 0~9 | 切換到指定窗口 |
| Ctrl+b | p | 切換到上一窗口 |
| Ctrl+b | n | 切換到下一窗口 |
| Ctrl+b | w | 打開窗口列表,用於且切換窗口 |
| Ctrl+b | , | 重命名當前窗口 |
| Ctrl+b | . | 修改當前窗口編號(適用於窗口重新排序) |
| Ctrl+b | f | 快速定位到窗口(輸入關鍵字匹配窗口名稱) |
Pane指令
| 前綴 | 指令 | 描述 |
|---|---|---|
| Ctrl+b | " | 當前面板上下一分為二,下側新建面板 |
| Ctrl+b | % | 當前面板左右一分為二,右側新建面板 |
| Ctrl+b | x | 關閉當前面板(關閉前需輸入y or n確認) |
| Ctrl+b | z | 最大化當前面板,再重複一次按鍵後恢復正常 |
| Ctrl+b | ! | 將當前面板移動到新的窗口打開(原窗口中存在兩個及以上面板有效) |
| Ctrl+b | ; | 切換到最後一次使用的面板 |
| Ctrl+b | q | 顯示面板編號,在編號消失前輸入對應的數字可切換到相應的面板 |
| Ctrl+b | { | 向前置換當前面板 |
| Ctrl+b | } | 向後置換當前面板 |
| Ctrl+b | Ctrl+o | 順時針旋轉當前窗口中的所有面板 |
| Ctrl+b | 方向鍵 | 移動光標切換面板 |
| Ctrl+b | o | 選擇下一面板 |
| Ctrl+b | 空格鍵 | 在自帶的面板佈局中循環切換 |
| Ctrl+b | Alt+方向鍵 | 以5個單元格為單位調整當前面板邊緣 |
| Ctrl+b | Ctrl+方向鍵 | 以1個單元格為單位調整當前面板邊緣(Mac下被系統快捷鍵覆蓋) |
| Ctrl+b | t | 顯示時鐘 |
個性化配置
Tmux的配置文件在~/.tmux.conf裏,如果沒有,自行創建即可!
更改前綴快捷鍵
如果你覺得默認的Ctrl+b的前綴快捷鍵不太好用,你可以自行更改為其他快捷鍵。
# 更改前綴快捷鍵為 Ctrl+a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
更改分屏快捷鍵
默認的分屏快捷鍵不太方便記憶,可以將它們改成下面這樣子。
unbind '"'
bind - splitw -v -c '#{pane_current_path}' # 垂直方向新增面板,默認進入當前目錄
unbind %
bind | splitw -h -c '#{pane_current_path}' # 水平方向新增面板,默認進入當前目錄
開啓鼠標支持
默認是不支持鼠標操作的,如果你不是鍵盤控,建議你開啓。
開啓後就可以通過鼠標直接點選Pane以及拖動調整Pane大小等。
set-option -g mouse on # 支持鼠標選取文本等
映射方向鍵
如果你熟悉Vim,那你一定很喜歡hjkl,下面將Tmux的方向鍵映射過來。
# -r表示可重複按鍵,大概500ms內,重複的按鍵都會有效,方便快速移動
bind -r k select-pane -U # 綁定k為上
bind -r j select-pane -D # 綁定j為下
bind -r h select-pane -L # 綁定h為左
bind -r l select-pane -R # 綁定l為右
小結
有了這個寶藏工具,大叔的房子大了,生活好了,生活越來越好了!