<mark id="n9zld"></mark>

      <thead id="n9zld"><video id="n9zld"></video></thead>

      <ins id="n9zld"></ins>

        <b id="n9zld"></b>

            <font id="n9zld"><video id="n9zld"></video></font>
            <b id="n9zld"></b>

              <dfn id="n9zld"><video id="n9zld"></video></dfn>

                Tmux 使用教程

                作者: 阮一峰

                日期: 2019年10月21日

                騰訊課堂 NEXT 學院

                Tmux 是一個終端復用器(terminal multiplexer),非常有用,屬于常用的開發工具。

                本文介紹如何使用 Tmux。

                一、Tmux 是什么?

                1.1 會話與進程

                命令行的典型使用方式是,打開一個終端窗口(terminal window,以下簡稱"窗口"),在里面輸入命令。用戶與計算機的這種臨時的交互,稱為一次"會話"(session)

                會話的一個重要特點是,窗口與其中啟動的進程是連在一起的。打開窗口,會話開始;關閉窗口,會話結束,會話內部的進程也會隨之終止,不管有沒有運行完。

                一個典型的例子就是,SSH 登錄遠程計算機,打開一個遠程窗口執行命令。這時,網絡突然斷線,再次登錄的時候,是找不回上一次執行的命令的。因為上一次 SSH 會話已經終止了,里面的進程也隨之消失了。

                為了解決這個問題,會話與窗口可以"解綁":窗口關閉時,會話并不終止,而是繼續運行,等到以后需要的時候,再讓會話"綁定"其他窗口。

                1.2 Tmux 的作用

                Tmux 就是會話與窗口的"解綁"工具,將它們徹底分離。

                (1)它允許在單個窗口中,同時訪問多個會話。這對于同時運行多個命令行程序很有用。

                (2) 它可以讓新窗口"接入"已經存在的會話。

                (3)它允許每個會話有多個連接窗口,因此可以多人實時共享會話。

                (4)它還支持窗口任意的垂直和水平拆分。

                類似的終端復用器還有 GNU Screen。Tmux 與它功能相似,但是更易用,也更強大。

                二、基本用法

                2.1 安裝

                Tmux 一般需要自己安裝。

                
                # Ubuntu 或 Debian
                $ sudo apt-get install tmux
                
                # CentOS 或 Fedora
                $ sudo yum install tmux
                
                # Mac
                $ brew install tmux
                

                2.2 啟動與退出

                安裝完成后,鍵入tmux命令,就進入了 Tmux 窗口。

                
                $ tmux
                

                上面命令會啟動 Tmux 窗口,底部有一個狀態欄。狀態欄的左側是窗口信息(編號和名稱),右側是系統信息。

                按下Ctrl+d或者顯式輸入exit命令,就可以退出 Tmux 窗口。

                
                $ exit
                

                2.3 前綴鍵

                Tmux 窗口有大量的快捷鍵。所有快捷鍵都要通過前綴鍵喚起。默認的前綴鍵是Ctrl+b,即先按下Ctrl+b,快捷鍵才會生效。

                舉例來說,幫助命令的快捷鍵是Ctrl+b ?。它的用法是,在 Tmux 窗口中,先按下Ctrl+b,再按下?,就會顯示幫助信息。

                然后,按下 ESC 鍵或q鍵,就可以退出幫助。

                三、會話管理

                3.1 新建會話

                第一個啟動的 Tmux 窗口,編號是0,第二個窗口的編號是1,以此類推。這些窗口對應的會話,就是 0 號會話、1 號會話。

                使用編號區分會話,不太直觀,更好的方法是為會話起名。

                
                $ tmux new -s <session-name>
                

                上面命令新建一個指定名稱的會話。

                3.2 分離會話

                在 Tmux 窗口中,按下Ctrl+b d或者輸入tmux detach命令,就會將當前會話與窗口分離。

                
                $ tmux detach
                

                上面命令執行后,就會退出當前 Tmux 窗口,但是會話和里面的進程仍然在后臺運行。

                tmux ls命令可以查看當前所有的 Tmux 會話。

                
                $ tmux ls
                # or
                $ tmux list-session
                

                3.3 接入會話

                tmux attach命令用于重新接入某個已存在的會話。

                
                # 使用會話編號
                $ tmux attach -t 0
                
                # 使用會話名稱
                $ tmux attach -t <session-name>
                

                3.4 殺死會話

                tmux kill-session命令用于殺死某個會話。

                
                # 使用會話編號
                $ tmux kill-session -t 0
                
                # 使用會話名稱
                $ tmux kill-session -t <session-name>
                

                3.5 切換會話

                tmux switch命令用于切換會話。

                
                # 使用會話編號
                $ tmux switch -t 0
                
                # 使用會話名稱
                $ tmux switch -t <session-name>
                

                3.6 重命名會話

                tmux rename-session命令用于重命名會話。

                
                $ tmux rename-session -t 0 <new-name>
                

                上面命令將0號會話重命名。

                3.7 會話快捷鍵

                下面是一些會話相關的快捷鍵。

                • Ctrl+b d:分離當前會話。
                • Ctrl+b s:列出所有會話。
                • Ctrl+b $:重命名當前會話。

                四、最簡操作流程

                綜上所述,以下是 Tmux 的最簡操作流程。

                1. 新建會話tmux new -s my_session
                2. 在 Tmux 窗口運行所需的程序。
                3. 按下快捷鍵Ctrl+b d將會話分離。
                4. 下次使用時,重新連接到會話tmux attach-session -t my_session

                五、窗格操作

                Tmux 可以將窗口分成多個窗格(pane),每個窗格運行不同的命令。以下命令都是在 Tmux 窗口中執行。

                5.1 劃分窗格

                tmux split-window命令用來劃分窗格。

                
                # 劃分上下兩個窗格
                $ tmux split-window
                
                # 劃分左右兩個窗格
                $ tmux split-window -h
                

                5.2 移動光標

                tmux select-pane命令用來移動光標位置。

                
                # 光標切換到上方窗格
                $ tmux select-pane -U
                
                # 光標切換到下方窗格
                $ tmux select-pane -D
                
                # 光標切換到左邊窗格
                $ tmux select-pane -L
                
                # 光標切換到右邊窗格
                $ tmux select-pane -R
                

                5.3 交換窗格位置

                tmux swap-pane命令用來交換窗格位置。

                
                # 當前窗格上移
                $ tmux swap-pane -U
                
                # 當前窗格下移
                $ tmux swap-pane -D
                

                5.4 窗格快捷鍵

                下面是一些窗格操作的快捷鍵。

                • Ctrl+b %:劃分左右兩個窗格。
                • Ctrl+b ":劃分上下兩個窗格。
                • Ctrl+b <arrow key>:光標切換到其他窗格。<arrow key>是指向要切換到的窗格的方向鍵,比如切換到下方窗格,就按方向鍵
                • Ctrl+b ;:光標切換到上一個窗格。
                • Ctrl+b o:光標切換到下一個窗格。
                • Ctrl+b {:當前窗格左移。
                • Ctrl+b }:當前窗格右移。
                • Ctrl+b Ctrl+o:當前窗格上移。
                • Ctrl+b Alt+o:當前窗格下移。
                • Ctrl+b x:關閉當前窗格。
                • Ctrl+b !:將當前窗格拆分為一個獨立窗口。
                • Ctrl+b z:當前窗格全屏顯示,再使用一次會變回原來大小。
                • Ctrl+b Ctrl+<arrow key>:按箭頭方向調整窗格大小。
                • Ctrl+b q:顯示窗格編號。

                六、窗口管理

                除了將一個窗口劃分成多個窗格,Tmux 也允許新建多個窗口。

                6.1 新建窗口

                tmux new-window命令用來創建新窗口。

                
                $ tmux new-window
                
                # 新建一個指定名稱的窗口
                $ tmux new-window -n <window-name>
                

                6.2 切換窗口

                tmux select-window命令用來切換窗口。

                
                # 切換到指定編號的窗口
                $ tmux select-window -t <window-number>
                
                # 切換到指定名稱的窗口
                $ tmux select-window -t <window-name>
                

                6.3 重命名窗口

                tmux rename-window命令用于為當前窗口起名(或重命名)。

                
                $ tmux rename-window <new-name>
                

                6.4 窗口快捷鍵

                下面是一些窗口操作的快捷鍵。

                • Ctrl+b c:創建一個新窗口,狀態欄會顯示多個窗口的信息。
                • Ctrl+b p:切換到上一個窗口(按照狀態欄上的順序)。
                • Ctrl+b n:切換到下一個窗口。
                • Ctrl+b <number>:切換到指定編號的窗口,其中的<number>是狀態欄上的窗口編號。
                • Ctrl+b w:從列表中選擇窗口。
                • Ctrl+b ,:窗口重命名。

                七、其他命令

                下面是一些其他命令。

                
                # 列出所有快捷鍵,及其對應的 Tmux 命令
                $ tmux list-keys
                
                # 列出所有 Tmux 命令及其參數
                $ tmux list-commands
                
                # 列出當前所有 Tmux 會話的信息
                $ tmux info
                
                # 重新加載當前的 Tmux 配置
                $ tmux source-file ~/.tmux.conf
                

                八、參考鏈接

                (完)

                留言(12條)

                大佬,推薦另一個tmux的alternative:byobu

                byobu可以使用tmux作為后端,并且自帶一套十分好用的配置。或者說,可以把byobu看作開箱即用的tmux來使用。

                一個月了,阮老師終于更新了。

                講解通俗易懂,足夠系統化。[Thumbs up]

                > 1.2 Tmux的作用
                >(2) 它可以讓新窗口"接入"已經存在的會話。
                似乎多了一個空格。

                噴子還有5s到達戰場

                老師講的很詳盡, tmux一直在用,很方便, 登錄開發機,直接加載保存好的tmux session 就可以快速恢復工作布局。

                還沒仔細看,想問一下和screen的區別是什么

                懶得再學一套快捷鍵,習慣用screen了,感覺功能上差不多

                引用xxb的發言:

                還沒仔細看,想問一下和screen的區別是什么

                我也在用screen.感覺比較方便,懶得學新的了.

                非常實用而且上手即會.謝謝老師提供的資料.另外狗尾續貂補充一下下,當幾個窗格構成形如

                0|1
                2

                此類布局的時候,在2中是無法進行swap-pane -U操作的,在1和2中同樣也無法進行swap-pane -D操作,個人猜想是因為這樣的命令會造成歧義所以直接ban掉了吧. 此時如果想交換0和2號窗格的內容,我們可以在任意窗格中顯式指定想要交換的源窗口和目的窗口:
                tmux swap-pane -s 0 -t 2

                > 5.3 交換窗格位置

                最后兩條 -L 與 -R 是沒有該命令的。

                @琚致遠:

                謝謝指出,已經更正。

                寫的真好

                我要發表看法

                «-必填

                «-必填,不公開

                «-我信任你,不會填寫廣告鏈接

                99爱视频