Tmux
是一個 Linux (Mac OS也支援)下的終端複用器,相較於 Screen
更為強大,但快捷鍵和操作邏輯也更復雜,一段時間不用,就很容易忘記相關的命令和快捷鍵。本文旨在通過一個簡單的場景,快速重拾 Tmux
Tmux
通常用來保持對談(session),如果我們通過 ssh 連線伺服器處理打包等的耗時操作,那麼網路波動可能會導致連線斷開,使得操作失敗,使用 Tmux
對談會被保持,任務依然會繼續,我們可以隨時恢復對談
Tmux
另一個常用的功能是分屏,快速地建立 Window
和 Pane
,方便地在不同的任務間穿梭
vim ~/.tmux.conf
# 將預設修飾鍵(prefix) ctrl + b 修改:ctrl + a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# 啟用滑鼠模式
set-option -g -q mouse on
# 修改分屏快捷鍵
# 左右分屏
bind h split-window -h
# 上下分屏
bind v split-window -v
# 可以取消預設的分屏快捷鍵對映
# unbind '"'
# unbind %
# 將 tmux 的複製模式鍵繫結設定為 vi 模式
setw -g mode-keys vi
重新載入 Tmux 組態檔
tmux source-file ~/.tmux.conf
這些命令大多是用於 tmux Session 的增刪改查,一些命令進入 tmux 後將無法使用
# 建立新的 session
tmux new -s <session-name>
# 刪除 seesion
tmux kill-session -t 0
# 重新命名 seesion
tmux rename-session -t 0 <new-name>
# 檢視 所有 session
tmux ls
# 進入最近使用的 session
tmux attach
# 進入編號為 1 的 session
tmux attach -t 1
可以定義一些 alias 簡化輸入
# 新增到 shell 初始化指令碼中
# Bash Shell 是 ~/.bashrc
# Zsh Shell 是 ~/.zshrc
alias tnew='tmux new -s'
alias tatt='tmux attach'
alias tkill='tmux kill-session -t'
alias tkillall='tmux kill-session -a'
alias tname='tmux rename-session -t'
alias tls='tmux ls'
在使用下面的快捷鍵之前,都需要先按 tmux 的修飾鍵(prefix),修改後的修飾鍵為:Ctrl + a;具體做法是:先按住 Ctrl 再按一下 a,這時可以鬆開 Ctrl 和 a,這時 prefix 已經生效了,我們可以加上下面的任意按鍵以實現對應的功能
tmux 有 Session
、Window
、Pane
這三個比較重要的概念
setw -g mode-keys vi
所以我們可以直接用 vim 的快捷鍵跳轉單詞或者行我們可以通過 空格鍵
開始選中,這時移動遊標可以擴大選取,按 回車
完成文字複製
進入複製模式後,可以通過 q
退出複製模式
tmux 就像 vim 一樣,如果不經常使用,就很容易忘記快捷鍵,可以通過一個場景把這些零碎的知識串起來,同時場景也方便重複練習和舉一反三
我們可以在 tmux 裡,編譯執行一個 c 的 hello world,prefix
預設為 Ctrl + b
,設定裡我們修改為 Ctrl + a
# 使用 alias 的話可以用 tnew run-c
tmux new -s run-c
我們可以使用 prefix + ,
將 Windows 名稱修改為 hello-world
使用 vim 編輯 hello.c
vim hello.c
按 i
進入 vim 的編輯模式,輸入:
#include<stdio.h>
int main(){
printf("hello world\n");
}
按ESC
退出編輯模式,鍵入 :w
儲存輸入
使用 prefix + %
(修改了設定則可以使用 prefix + h)在右側新增一個新的 Pane 用於編譯
新增的 Pane 將螢幕一分為二,但是編譯不需要這麼大,我們可以通過 prefix + Alt + 右方向鍵
縮小 Pane 寬度,按完 prefix 後,可以多次按 Alt + 右方向鍵
持續縮小 Pane 寬度
在右側 Pane 我們可以使用 gcc hello.c
編譯 hello.c
使用 ./a.out
執行 hello world 程式
使用 prefix + ;
,將遊標切換回左側 Pane,如果覺想暫時收起右側的 Pane
,可以用 prefix + z
,最大化或取消最大化當前 Pane
我們可以繼續編輯檔案,輸入 i
進入 vim 編輯模式,將 world
,修改為 tmux
,按ESC
退出編輯模式,鍵入 :w
儲存輸入
使用 prefix + ;
,將遊標切換回右側 Pane,完成編譯和執行
gcc hello.c
./a.out
使用 prefix + x
,關閉右側 Pane,按 y
確認關閉
使用 prefix + d
(tmux detach),將當前對談與視窗分離,回到我們自己的 Shell
使用 tmux attach
(修改了設定則可以使用 tatt
),回到我們剛出 detach 的 Session
tmux: some considerations, some best practices
How to Boost 10X Productivity with Tmux
Tmux 使用教學 - 阮一峰
手把手教你使用終端複用神器 tmux
Tmux + Vim 工作流! 同時操作多個專案, 追求極致的絲滑流暢!
「TMUX」十分鐘掌握 tmux -- 高效的終端複用工具 : )
十分鐘掌握 TMUX
Y分鐘速成X,其中 X=tmux
Tmux的快捷鍵,包括調整視窗大小