Home >> Blog >> 快速簡單的 tmux 教學

快速簡單的 tmux 教學

我們是正統軟體工程學系畢業的SEO搜尋引擎優化團隊人員,我們喜歡使用命令行。說真的,我們認為對於軟體開發人員來說,幾乎沒有比終端更高效、更通用的工具了。也許這是我們在使用終端時得到的感覺。

在工作中,我們會進行很多結對編寫程式。每個人都有自己的筆記電腦,可以按照自己喜歡的方式進行設置。因為我們喜歡使用命令行,所以我們花了很多時間修改我的終端環境,使用命令行更加愉快和簡化。

快速簡單的 tmux 教學

如果他們在知道自己在做什麼之前就和我們一起工作過。但是每隔一段時間就會有一個新的團隊成員不了解我們的環境。通常這是他們會問諸如“我在看WTF嗎?”之類的問題。現在是我大放異彩的時候了!

因為他們所看到的不亞於切片麵包以來最好的東西。它是tmux,一個所謂的終端多路復用器。簡單地說,tmux 充當終端1中的窗口管理器,允許您在單個終端窗口中創建多個窗口和窗格。

我將繼續向他們介紹您可以使用 tmux 做什麼。在那之後,他們要麼上癮並想自己嘗試一下,要麼他們告訴我不要使用我古老的工具,而只使用 iTerm2。在前一種情況下,我通常會幫助他們在他們的機器上安裝 tmux,並會給他們一個 10 分鐘的教學來學習最重要的基礎知識。

這篇文章將為您提供關於 tmux 及其可能性的同樣兩分鐘介紹,然後是典型的 10 分鐘動手教學,以自行設置和了解 tmux。如果您有 10 分鐘的空閒時間,並且最終想要更精通 tmux:請繼續閱讀!

什麼是 tmux?

tmux 的作者將其描述為終端多路復用器。這個花哨的術語背後隱藏著一個簡單的概念:在一個終端窗口中,您可以打開多個窗口和拆分視圖(在 tmux 術語中稱為“窗格” )。每個窗格都將包含其自己的、獨立運行的終端實例。這使您可以讓多個終端命令和應用程式在視覺上彼此相鄰運行,而無需打開多個終端仿真器窗口。

最重要的是,tmux 將這些窗口和窗格保留在會話中。您可以隨時退出會話。這稱為“分離”。tmux 將保持此會話處於活動狀態,直到您終止 tmux 伺服器(例如,當您重新啟動時)2。這非常有用,因為在以後的任何時間點,您都可以通過簡單地“附加”到該會話來準確地從您離開它的位置拾取該會話。

如果您曾經使用過遠端伺服器或 Raspberry Pi 通過 ssh,您可以猜到這將在哪裡有用:當您失去 ssh 連接時,tmux 會話將被簡單地分離,但將繼續在後台伺服器上運行,包括所有在您的會話中運行的進程。要繼續您的會話,只需再次 ssh 到伺服器並附加到正在運行的會話。

但是 tmux 不僅在遠端機器上工作時有用。不僅因為它的窗口管理功能,還因為它的會話處理。就我個人而言,當我切換上下文時,我發現自己脫離了會話。我將為我的新任務啟動一個新會話,並在我想繼續執行舊任務時附加到舊會話。

您會看到 tmux 基本上提供了兩大功能:終端中的窗口管理和會話管理。如果您熟悉GNU Screen ,這並不是什麼新鮮事。將 tmux 視為 Screen 的更易於使用且功能更強大的替代品(顯然我在這裡固執己見)。

已經說夠了。讓我們在動手教學中做好準備!

入門

本動手教學將幫助您快速上手並運行 tmux。它只會涵蓋基本功能,這些功能足以讓您開始使用 tmux 並提高工作效率。只需打開您的終端並按照說明進行操作。

安裝

幸運的是,在大多數發行版上安裝 tmux 非常簡單,一個簡單的sudo apt-get install tmux(Ubuntu 和衍生產品)或brew install tmux(Mac)就足夠了。

開始您的第一次會議

對於您的第一個會話,只需使用新會話啟動 tmux:

tmux

這將創建一個新的 tmux 會話,底部有一個漂亮的全綠色狀態欄:

快速簡單的 tmux 教學

狀態欄是 tmux 的重要組成部分。除了當前打開的窗口(左側)外,它還顯示一些系統信息,如日期和時間(右側)。狀態欄也可以自定義,我已經看到了一些非常奇特的東西(即將到來的日曆事件、電池狀態等等),但這是我們稍後會留下的。

拆分窗格

現在我們已經創建了第一個會話,我們可以對窗格有所了解。當你創建一個新會話時,tmux 默認會從一個窗口和一個面板開始。我們想要一個漂亮的分屏,所以讓我們拆分這個壞男孩。

tmux 中的所有命令都由前綴鍵後跟命令鍵觸發(非常類似於 emacs)。默認情況下,tmuxC-b用作前綴鍵。如果您不習慣這種符號,可能會讀起來有點奇怪。在這個 emacs 表示法C-中,意思是“按住Ctrl鍵” 3。因此C-b簡單地意味著同時按下Ctrl和b鍵。

將窗格拆分為左窗格和右窗格的快捷方式是C-b %. 記住我剛剛告訴您的關於 tmux 的前綴和命令鍵序列的內容,這意味著將您的單個窗格拆分為您按下的左窗格和右窗格Ctrl,b同時釋放兩者,然後鍵入%鍵。瞧!您剛剛調用了您的第一個 tmux 命令並將您的窗格一分為二。

快速簡單的 tmux 教學

在拆分為左右的地方,也有拆分為頂部和底部的窗格。要將窗格拆分為頂部和底部窗格,請使用C-b "快捷方式。

導航窗格

現在我們被困在新創建的窗格中。但是我們真的很想回到左邊的那個。Easy peasy:使用快捷方式切換到不同的窗格C-b ,其中 <箭頭鍵> 是指向要切換到的窗格的箭頭鍵。在我們的例子中,我們想要切換到左側的面板,所以它C-b left適合我們。再一次,以便我們完全理解這一點:這意味著您按Ctrl和b(您的前綴),然後按left箭頭鍵進入左側窗格。

您現在可以繼續進一步拆分每個新面板。隨意嘗試並像瘋子一樣拆分您的窗格以感受它。

關閉窗格

關閉窗格就像關閉常規終端會話一樣簡單。無論是打字exit還是點擊Ctrl-d,它都消失了。

創建窗口

tmux 中的 Windows 可以比作創建新的虛擬桌面;如果您曾經使用過一種主要的 Linux 桌面環境(KDE、Gnome),那麼您希望這個類比會有所幫助。

創建新窗口就像鍵入一樣簡單C-b c(最後一次:即Ctrl和b一次,然後c)。然後,新窗口將在 tmux 的狀態欄中呈現給您。

快速簡單的 tmux 教學

您現在可以根據需要在新窗口中劃分窗格。或者不要。這取決於你。

切換到上一個窗口(根據狀態欄中的順序)使用C-b p,切換到下一個窗口使用C-b n。如果您創建了許多窗口,您可能會發現通過鍵入窗口編號直接轉到窗口很有用(狀態欄會告訴您哪個窗口有哪個編號),只需使用C-b where 是窗口前面的數字狀態欄中的名稱。

會話處理

如果您完成了會話,您可以通過簡單地退出裡面的所有窗格來擺脫它,或者您可以將會話保留在後台以供以後重用。

要分離當前會話,請使用C-b d. 您還可以使用C-b Dtmux 讓您選擇要分離的會話。這將分離您的會話,但會讓您在該會話中在後台運行。

現在您的會話已分離,您可以在以後的任何時間點從您離開它的地方拿起它。要重新附加到會話,您需要首先確定要附加到哪個會話。通過使用找出正在運行的會話

tmux ls

這將為您提供所有正在運行的會話的列表,在我們的示例中應該類似於

0:2 個窗口(創建於 2015 年 8 月 15 日星期六 17:55:34)[199x44](分離)

要連接到該會話,您再次啟動 tmux,但這次告訴它要附加到哪個會話:

tmux attach -t 0

請注意,這-t 0是告訴 tmux 附加到哪個會話的參數。“0”是tmux ls輸出的第一部分。

如果您希望給您的會話一個更有意義的名稱(而不是一個以 0 開頭的數字名稱),您可以使用創建下一個會話

tmux new -s database

這將創建一個名為“database”的新會話。

您還可以重命名現有會話:

tmux rename-session -t 0 database

下次您附加到該會話時,您只需使用tmux attach -t database. 如果您同時使用多個會話,這可能成為一項基本功能。

就是這樣!恭喜,您剛剛完成了您的第一個 tmux 會話,並開始使用它的窗口和會話管理。是的,tmux 可以做更多的事情。但是您剛剛學到的應該是將來開始使用 tmux 的一切。

為什麼選擇 tmux?

我經常得到的回應是:“太好了,我明白了。但我為什麼要使用 tmux 及其奇怪的組合鍵而不是只使用 iTerm2?”

你是對的,當它只是基本的窗口管理時,iTerm for Mac 也支持選項卡和窗格。對於 Linux,有終結者。那麼,在這個時代,為什麼有人會有學習一些古老技術的衝動呢?

但你錯過了。我喜歡 tmux 而不是 iTerm 等的原因有幾個:

  • 會話處理:分離和附加到會話有助於我進行上下文切換和遠端工作
  • 平台獨立性:我可以在我的 Macbook、我的 Linux 筆記本、雲伺服器、Raspberry Pis、BeagleBones 等上使用 tmux。
  • 可定制:有很多方法可以定制我的 tmux 環境的外觀和行為。我可以使用一個簡單的 dotfile 在不同的平台上同步它
  • 街頭公信力:你不希望別人稱你為lamer,是嗎?:P

繼續

如果你現在很想知道 tmux 還能做什麼,那就太好了。幸運的是,大多數東西都很容易發現。只需鍵入C-b ?即可查看所有可用命令的列表並開始試驗。

我們自己經常使用的一些命令是:

  • C-b z:使窗格全屏顯示。再次點擊C-b z以將其縮小到之前的大小
  • C-b C-: 向 <箭頭鍵> 4方向調整窗格大小
  • C-b ,: 重命名當前窗口

除此之外,還有大量資源可以幫助您進一步使用 tmux。像我這樣的人正在寫博客,講述他們的 tmux 體驗並分享他們的發現。您可以在 Github 上的 dotfiles 存儲庫中找到共享 tmux 配置的人。Brian Hogan甚至有一本書專門介紹 tmux。

現在最好自己發現一些東西。試驗,胡鬧,也許嘗試在你的日常工作中使用 tmux。這需要一段時間來適應,而且一開始你可能會感覺很慢。我們只能鼓勵你繼續使用它。感受一下它的功能,你很快就會發現你在終端上的工作將是純粹的幸福和瘋狂的快速。

如果您對自定義 tmux 體驗感興趣,我們建議您上網閱讀自定義 tmux.conf 教學。

  1. 如果您來自 Linux 背景,您可能熟悉諸如Openbox、i3或Awesome之類的窗口管理器的概念↩
  2. tmux 基於客戶端-伺服器架構。雖然這很少相關,但了解事物的工作原理是有幫助的。tmux 伺服器跟踪所有正在運行的會話。您只會使用 tmux 客戶端並創建新會話或連接到現有會話。 ↩
  3. 也可能M-只有Meta鍵是相同的(即Alt在大多數鍵盤上)。 ↩
  4. 這是一個有趣的。是的,您需要Ctrl前綴和命令鍵。我發現最簡單的方法是只b在前綴鍵之後釋放該鍵並Ctrl在我反复按箭頭鍵時一直按住。做一點實驗來感受一下。 ↩