十分鐘學會 tmux

tmux 是一款終端復用命令行工具,一般用于 Terminal 的窗口管理。在 macOS 下评肆,使用 iTerm2 能應付絕大多數(shù)窗口管理的需求。

iTerm2 的窗口管理

如上圖所示非区,iTerm2 能新建多個標簽頁(快捷鍵 ?T)瓜挽,也能在同一個窗口中分割出多個窗格(快捷鍵 ?D 或 ??D)。

tmux 相比 iTerm2 的優(yōu)勢在于:

  • iTerm2 的窗格切換快捷鍵(??→)容易與其他軟件全局快捷鍵沖突(例如 Spectacle 的窗口分割快捷鍵)征绸,tmux 由于存在前綴快捷鍵久橙,所以不存在快捷鍵沖突問題;
  • tmux 可以在終端軟件重啟后通過命令行恢復上次的 session 管怠,而終端軟件則不行淆衷;
  • tmux 簡潔優(yōu)雅、訂制性強排惨,學會之后也能在 Linux 上使用吭敢,有助于逼格提升。

接下來我們花十分鐘來掌握下 tmux 的基礎用法:

安裝運行

macOS 上使用 Homebrew 安裝即可:

brew install tmux

安裝完成后暮芭,運行 tmux 新建一個 tmux 的會話(session)鹿驼,此時窗口唯一的變化是在底部會出現(xiàn)一個 tmux 的狀態(tài)欄。我們先按下 tmux 默認的前綴快捷鍵 ?b 將其激活為快捷鍵接收模式辕宏,再按下 % 畜晰,即可將當前窗口切分為左右兩個窗格。

tmux 窗格

快捷鍵

一般情況下 tmux 中所有的快捷鍵都需要和前綴快捷鍵 ?b 來組合使用(注:? 為 Mac 的 control 鍵)瑞筐,以下是常用的窗格(pane)快捷鍵列表凄鼻,大家可以依次嘗試下:

窗格操作

  • % 左右平分出兩個窗格
  • " 上下平分出兩個窗格
  • x 關閉當前窗格
  • { 當前窗格前移
  • } 當前窗格后移
  • ; 選擇上次使用的窗格
  • o 選擇下一個窗格,也可以使用上下左右方向鍵來選擇
  • space 切換窗格布局聚假,tmux 內(nèi)置了五種窗格布局块蚌,也可以通過 ?1?5來切換
  • z 最大化當前窗格,再次執(zhí)行可恢復原來大小
  • q 顯示所有窗格的序號膘格,在序號出現(xiàn)期間按下對應的數(shù)字峭范,即可跳轉(zhuǎn)至對應的窗格

窗口操作

tmux 除了窗格以外,還有窗口(window) 的概念瘪贱。依次使用以下快捷鍵來熟悉 tmux 的窗口操作:

  • c 新建窗口纱控,此時當前窗口會切換至新窗口,不影響原有窗口的狀態(tài)
  • p 切換至上一窗口
  • n 切換至下一窗口
  • w 窗口列表選擇菜秦,注意 macOS 下使用 ?p?n 進行上下選擇
  • & 關閉當前窗口
  • , 重命名窗口甜害,可以使用中文,重命名后能在 tmux 狀態(tài)欄更快速的識別窗口 id
  • 0 切換至 0 號窗口球昨,使用其他數(shù)字 id 切換至對應窗口
  • f 根據(jù)窗口名搜索選擇窗口尔店,可模糊匹配
tmux 狀態(tài)欄說明

會話操作

如果運行了多次 tmux 命令則會開啟多個 tmux 會話(session)。在 tmux 會話中,使用前綴快捷鍵 ?b 配合以下快捷鍵可操作會話:

  • $ 重命名當前會話
  • s 選擇會話列表
  • d detach 當前會話闹获,運行后將會退出 tmux 進程期犬,返回至 shell 主進程

在 shell 主進程下運行以下命令可以操作 tmux 會話:

tmux new -s foo # 新建名稱為 foo 的會話
tmux ls # 列出所有 tmux 會話
tmux a # 恢復至上一次的會話
tmux a -t foo # 恢復名稱為 foo 的會話河哑,會話默認名稱為數(shù)字
tmux kill-session -t foo # 刪除名稱為 foo 的會話
tmux kill-server # 刪除所有的會話

除以上提到的快捷鍵以外避诽,tmux 還有許多其他的快捷鍵和命令,使用前綴快捷鍵 ?b? 可以查看所有的快捷鍵列表璃谨,該列表視圖為 tmux copy 模式沙庐,該模式下可使用以下快捷鍵(無需加 ?b 前綴):

  • ?v 下一頁
  • Meta v 上一頁 (tmux 快捷鍵為 Emacs 風格,這里的 Meta 鍵可用 Esc 模擬)
  • ?s 向前搜索
  • q 退出 copy 模式

常見配置與問題

1佳吞、鼠標滾屏

tmux 默認配置中最糟糕的體驗就是滾屏查看和文本復制(大家可以先試試看)拱雏。你需要先使用 ?b [ 快捷鍵進入 copy 模式,然后使用翻頁底扳、字符定位來選擇需要的字符铸抑,效率遠沒有鼠標選擇來的快。

因此 tmux 提供了一些個性化配置項來優(yōu)化這些配置衷模,首先在 shell 中運行 touch ~/.tmux.conf 新建用戶配置文件鹊汛。在文件中增加以下內(nèi)容:

# 開啟鼠標模式
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 命令重新加載配置至耻。

2、鼠標復制

tmux 下開啟鼠標滾屏后镊叁,復制文本有兩種方式:

  • 方法 1:使用 ?b z 進入窗格全屏模式尘颓,鼠標選擇文本的同時按住 option 鍵 ?,然后使用 ?c 進行復制晦譬;
  • 方法 2:開啟 iTerm2 「在選擇時復制」選項疤苹,即可實現(xiàn)自動選擇復制。如下圖:
iTerm2 配置在選擇時復制

3蛔添、tips

  • screen 是另外一款終端復用命令行痰催,但他沒有 tmux 好看好用;
  • tmux 有個 bug 迎瞧,導致從它啟動的 vscode 的復制粘貼快捷鍵會失效夸溶;
  • iTerm2 可以通過 「Preferences -> Profiles -> Keyboard Behavior -> Left option key acts as +Esc」將鍵盤的左側(cè) option 鍵映射為 Meta 鍵

另外,最近看到兩篇不錯的 awk凶硅、sed 命令入門缝裁,感興趣的同學可以自己看一下。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市捷绑,隨后出現(xiàn)的幾起案子韩脑,更是在濱河造成了極大的恐慌,老刑警劉巖粹污,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件段多,死亡現(xiàn)場離奇詭異,居然都是意外死亡壮吩,警方通過查閱死者的電腦和手機进苍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸭叙,“玉大人觉啊,你說我怎么就攤上這事∩虮矗” “怎么了杠人?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宋下。 經(jīng)常有香客問我嗡善,道長,這世上最難降的妖魔是什么杨凑? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任滤奈,我火速辦了婚禮,結(jié)果婚禮上撩满,老公的妹妹穿的比我還像新娘蜒程。我一直安慰自己,他們只是感情好伺帘,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布昭躺。 她就那樣靜靜地躺著,像睡著了一般伪嫁。 火紅的嫁衣襯著肌膚如雪领炫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天张咳,我揣著相機與錄音帝洪,去河邊找鬼。 笑死脚猾,一個胖子當著我的面吹牛葱峡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播龙助,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼砰奕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起军援,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤仅淑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胸哥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涯竟,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年烘嘱,在試婚紗的時候發(fā)現(xiàn)自己被綠了昆禽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡蝇庭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捡硅,到底是詐尸還是另有隱情哮内,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布壮韭,位于F島的核電站北发,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏喷屋。R本人自食惡果不足惜琳拨,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望屯曹。 院中可真熱鬧狱庇,春花似錦、人聲如沸恶耽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽偷俭。三九已至浪讳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涌萤,已是汗流浹背淹遵。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留负溪,地道東北人透揣。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像笙以,于是被迫代替她去往敵國和親淌实。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • iTerm2 已經(jīng)整合了 tmux,這意味著什么拆祈? 通常情況下恨闪,當你使用 tmux 的時候,會在一個「物理」窗口(...
    悅?cè)A閱讀 23,106評論 1 14
  • 引子 SSH連接是我們與服務器交互的主要手段放坏,每個程序員每天都會用到咙咽,就像喝白開水一樣普通。就是這樣一個簡單而又高...
    bluexiii閱讀 12,494評論 0 8
  • title: Tmuxdate: 2016-05-27 20:48:52tags: kali系統(tǒng)配置 0x00 什...
    曼路x_x閱讀 1,105評論 0 0
  • 推送技術哪家強淤年,還是要去找極光钧敞,沒有一點打廣告的意思哦!接觸蘋果遠程推送功能不是一天二天了麸粮,記得上次也就是前年集成...
    小白哥有話說閱讀 1,400評論 4 15
  • 今天是個好日子溉苛,我參加了養(yǎng)老院的活動,內(nèi)心感覺棒極了弄诲。我曾經(jīng)很多次的問自己為何要去養(yǎng)老院看望老人呢愚战?自己內(nèi)心深處聽...
    喜水閱讀 509評論 4 2