tmux 是一款終端複用命令行工具,通常用於 Terminal 的窗口管理。在 macOS 下,使用 iTerm2 能應付絕大多數窗口管理的需求。git
如上圖所示,iTerm2 能新建多個標籤頁(快捷鍵 ⌘T),也能在同一個窗口中分割出多個窗格(快捷鍵 ⌘D 或 ⌘⇧D)。github
tmux 相比 iTerm2 的優點在於:shell
iTerm2 的窗格切換快捷鍵(⌘⌥→)容易與其餘軟件全局快捷鍵衝突(例如 Spectacle 的窗口分割快捷鍵),tmux 因爲存在前綴快捷鍵,因此不存在快捷鍵衝突問題;vim
tmux 能夠在終端軟件重啓後經過命令行恢復上次的 session ,而終端軟件則不行;session
tmux 簡潔優雅、訂製性強,學會以後也能在 Linux 上使用,有助於逼格提高。工具
接下來咱們花十分鐘來掌握下 tmux 的基礎用法:佈局
macOS 上使用 Homebrew 安裝便可:優化
brew install tmux
spa
安裝完成後,運行 tmux
新建一個 tmux 的會話(session),此時窗口惟一的變化是在底部會出現一個 tmux 的狀態欄。咱們先按下 tmux 默認的前綴快捷鍵 ⌃b
將其激活爲快捷鍵接收模式,再按下 %
,便可將當前窗口切分爲左右兩個窗格。命令行
通常狀況下 tmux 中全部的快捷鍵都須要和前綴快捷鍵 ⌃b
來組合使用(注:⌃ 爲 Mac 的 control 鍵),如下是經常使用的窗格(pane)快捷鍵列表,你們能夠依次嘗試下:
%
左右平分出兩個窗格
"
上下平分出兩個窗格
x
關閉當前窗格
{
當前窗格前移
}
當前窗格後移
;
選擇上次使用的窗格
o
選擇下一個窗格,也可使用上下左右方向鍵來選擇
space
切換窗格佈局,tmux 內置了五種窗格佈局,也能夠經過 ⌥1
至 ⌥5
來切換
z
最大化當前窗格,再次執行可恢復原來大小
q
顯示全部窗格的序號,在序號出現期間按下對應的數字,便可跳轉至對應的窗格
tmux 除了窗格之外,還有窗口(window) 的概念。依次使用如下快捷鍵來熟悉 tmux 的窗口操做:
c
新建窗口,此時當前窗口會切換至新窗口,不影響原有窗口的狀態
p
切換至上一窗口
n
切換至下一窗口
w
窗口列表選擇,注意 macOS 下使用 ⌃p
和 ⌃n
進行上下選擇
&
關閉當前窗口
,
重命名窗口,可使用中文,重命名後能在 tmux 狀態欄更快速的識別窗口 id
0
切換至 0 號窗口,使用其餘數字 id 切換至對應窗口
f
根據窗口名搜索選擇窗口,可模糊匹配
若是運行了屢次 tmux
$
重命名當前會話
s
選擇會話列表
d
detach 當前會話,運行後將會退出 tmux 進程,返回至 shell 主進程
在 shell 主進程下運行如下命令能夠操做 tmux 會話:
tmux new -s foo # 新建名稱爲 foo 的會話 tmux ls # 列出全部 tmux 會話 tmux a # 恢復至上一次的會話 tmux a -t foo # 恢復名稱爲 foo 的會話,會話默認名稱爲數字 tmux kill-session -t foo # 刪除名稱爲 foo 的會話 tmux kill-server # 刪除全部的會話
除以上提到的快捷鍵之外,tmux 還有許多其餘的快捷鍵和命令,使用前綴快捷鍵 ⌃b
加 ?
能夠查看全部的快捷鍵列表,該列表視圖爲 tmux copy 模式,該模式下可以使用如下快捷鍵(無需加 ⌃b
前綴):
⌃v
下一頁
Meta v
上一頁 (tmux 快捷鍵爲 Emacs 風格,這裏的 Meta 鍵可用 Esc 模擬)
⌃s
向前搜索
q
退出 copy 模式
tmux 默認配置中最糟糕的體驗就是滾屏查看和文本複製(你們能夠先試試看)。你須要先使用 ⌃b
[
快捷鍵進入 copy 模式,而後使用翻頁、字符定位來選擇須要的字符,效率遠沒有鼠標選擇來的快。
所以 tmux 提供了一些個性化配置項來優化這些配置,首先在 shell 中運行 touch ~/.tmux.conf
新建用戶配置文件。在文件中增長如下內容:
# 開啓鼠標模式 set -g mode-mouse on # 容許鼠標選擇窗格 set -g mouse-select-pane on # 若是喜歡給窗口自定義命名,那麼須要關閉窗口的自動命名 set-option -g allow-rename off # 若是對 vim 比較熟悉,能夠將 copy mode 的快捷鍵換成 vi 模式 set-window-option -g mode-keys vi
配置文件修改完成後,能夠 tmux kill-server
重啓全部 tmux 進程,或者在 tmux 會話中使用 ⌃b
:
進入控制檯模式,輸入 source-file ~/.tmux.conf
命令從新加載配置。
tmux 下開啓鼠標滾屏後,複製文本有兩種方式:
方法 1:使用 ⌃b
z
進入窗格全屏模式,鼠標選擇文本的同時按住 option 鍵 ⌥
,而後使用 ⌘c
進行復制;
方法 2:開啓 iTerm2 「在選擇時複製」選項,便可實現自動選擇複製。以下圖:
screen 是另一款終端複用命令行,但他沒有 tmux 好看好用;
tmux 有個 bug ,致使從它啓動的 vscode 的複製粘貼快捷鍵會失效;
iTerm2 能夠經過 「Preferences -> Profiles -> Keyboard Behavior -> Left option key acts as +Esc」將鍵盤的左側 option 鍵映射爲 Meta 鍵