TMUX – The Terminal Multiplexer

簡單說,tmux就是screen的加強版
screen上面有的功能基本上tmux都有
然後再加上:

  • screen是GPL license, 而tmux是BSD license,使用上更自由
  • tmux可以直接切換session , screen只能退出再進另一個session
  • tmux可以開水平/垂直分割窗格(pane),screen只能開水平視窗
  • tmux的窗格可以任意移動、排列,甚至可以移出成為獨立視窗,或在session間移動
  • detach session後,tmux會記得先前的視窗分割,而screen會忘光光
  • tmux可以用滑鼠切換視窗/窗格,screen只能用鍵盤切換
  • tmux可以用滑鼠調整窗格大小,screen只能用指令切換
  • tmux可以用滑鼠滾輪捲動buffer,screen只能用指令切換
  • tmux有同時對多窗格輸入的特異功能(但用到機會不多就是)
  • tmux為client-server架構,遠比screen輕量。視窗開越多差距越大。
  • tmux的指令在cli和內部都可以使用,而且都一樣,不需要另外記。
  • tmux仍在持續更新,screen已經很多年沒有變動了。

tmux缺點:

  • screen比tmux有名,在公用的伺服器上頂多只會有screen,tmux得自己想辦法。
  • screen內建telnet和serial的client(不過我也沒用過就是), tmux沒有
  • tmux許多指令都比screen長。

SCREEN的內定prefix是[ctrl-a]
TMUX的內定prefix是[ctrl-b]
因大家習慣的prefix不見得相同
以下統一以[prefix]表示

TMUX

  • 進入TMUX
    $ tmux

  • 列出現有的session
    $ tmux ls

  • 繼續之前的session
    $ tmux attach {session name}

  • 繼續之前的session, 並把其它開著的地方detach
    $ tmux attach -d {session name}

  • 如果不指定session name,會自動用ls的第一個
    $ tmux attach

TMUX/SCREEN基本操作

  • 離開(detach),供下次使用
    [prefix] d

  • 快速鍵列表
    [prefix] ?

Session

(* 僅TMUX, SCREEN無法內部操作session)

  • 命名目前session
    [prefix] $

  • 列表/切換session
    [prefix] s

  • 切換回上一個使用的session
    [prefix] L

視窗

  • 命名目前window
    [prefix] , / [prefix] A

  • 開新window
    [prefix] c

  • 關閉window
    [prefix] & / [prefix] K

  • 離開shell (相當於在shell打exit)
    ctrl-d

  • 直接切換window
    [prefix] [0-9]

  • 列表/切換Window
    [prefix] w

  • 切換回上一個使用的window
    [prefix] l / [prefix] [prefix]

  • 搜尋/切換window
    [prefix] f

  • 下一個window
    [prefix] n

  • 上一個window
    [prefix] p

窗格

(screen的不列)

  • 水平分割窗格
    [prefix] "
  • 垂直分割窗格
    [prefix] "
  • 顯示窗格編號
    [prefix] q
  • 移到下個窗格
    [prefix] o
  • 移到上下左右窗格
    [prefix] 上下左右
  • 與上一個窗格交換位置
    [prefix] {
  • 與下一個窗格交換位置
    [prefix] }
  • 改變窗格配置
    [prefix] space
  • 窗格轉為獨立視窗
    [prefix] !

進階

  • 設定檔
    ~/.tmux.conf

  • 在tmux中修改設定檔並重新載入
    $ vi ~/.tmux.conf
    [prefix] : source-file ~/.tmux.conf

  • 看版本等資訊
    [prefix] : server-info

疑難雜症

  • 256色支援
    先看主機上有沒256色的設定檔
    /usr/share/terminfo/x/xterm-256color
    有的話
    export TERM='xterm-256color'
    然後~/.tmux.conf裏面要設定為
    set -g default-terminal "screen-256color"

  • tmux開啟滑鼠支援造成的問題
    如果把tmux設定成用滑鼠切換視窗或窗格
    讓原本終端機程式的滑鼠操作,例如選取複製、滾輪捲動buffer功能就會被吃掉
    不過這方面應該算好解決,許多終端機程式都會有一個override的按鍵
    例如putty裏面內定是按住shift,就可以不把滑鼠操作送到遠端,而正常使用原本的操作

  • vim的滑鼠問題
    如果在tmux下vim變的不能用滑鼠了
    在vimrc裏面加上
    ttymouse=xterm

    ttymouse=xterm2
    即可

在公用伺服器上安裝自己的tmux

在公用伺服器上因為沒法自己安裝套件
只能自己丟binary上去用

  • 先在別台電腦安裝或build tmux

  • apt安裝方法
    $ apt-get install tmux

  • build方法
    下載source

    ./configure
    make

    如果configure過程中提示找不到libevent
    要再安裝libevent-dev

  • 複製tmux程式到公用伺服器上
    如果伺服器上沒有libevent-1.4.so.2
    就要連libevent-1.4.so.2也複製過去
    先放在tmux用目錄下,用
    export LD_LIBRARY_PATH=.
    試一下看能不能正常執行
    確定沒問題的話就可以直接加進.bashrc裏面
    例如:

    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:{想放的地方}
    export LD_LIBRARY_PATH
  • build tmux lastest code
    準備套件:automake, libevent2..等等

    $ svn co http://tmux.svn.sourceforge.net/svnroot/tmux/trunk svn-build
    $ cd svn-build
    $ aclocal
    $ autoconf
    $ mkdir etc
    $ automake
    $ ./configure
    $ make
  • 修改tmux程式
    tmux有個問題
    開啟mouse-select-window之後,滑鼠滾輪只能選window
    正常應該游標不在狀態列上的時候,滾輪要能輸出給copy-mode或是其它程式才對
    現在開發中的版本有在解這問題,但是我用還是不太對勁,時好時壞的
    暫時解法:自己改程式,把滾輪選擇session功能廢掉
    找到server-client.c
    在server_client_check_mouse ( )裏面
    有個判斷滑鼠游標是不是放在狀態列上的地方

statusat = status_at_line(c);

/ * Is this a window selection click on the status line? */
if (statusat != -1 && mouse->y == (u_int)statusat &&
options_get_number(oo, “mouse-select-window") ) {

把他加上"非滑鼠滾輪"的判斷(滾輪為"MOUSE_45")

statusat = status_at_line(c);

/* Is this a window selection click on the status line? */
if (statusat != -1 && mouse->y == (u_int)statusat &&
options_get_number(oo, “mouse-select-window") && !(mouse->b & MOUSE_45)) {

這樣滾輪才能正常用在其它地方,反正也不會想用滾輪切換window吧?

--
現在還在寫blog分享資訊的人越來越少,如果覺得文章對您有幫助,歡迎在底下留言,這樣我也比較有動力繼續寫下去,謝啦!

在〈TMUX – The Terminal Multiplexer〉中有 5 則留言

  1. 這東西真的不像一邊問Surface可不可以買,一邊在寫這種看不懂東西的人會說的…XD

  2. 哈~要把他寫到看的懂也是可以啦,只是太花時間了,只是筆記~筆記嘛!

  3. 話說我還真的想去買台Win8的平版,不過等他出到穩定不知幾時了

  4. 不過要符合你的需求,Win8的產品比較有機會,安卓天天改版也不曉得改了啥,iOS一堆限制,連一個檔案管理都沒有

  5. Android是要root才能掛cifs module,能用是能用,但就是麻煩
    iOS是完全沒救,就算jb也沒搞頭
    Win8是不知要等到幾時…

    在想說是不是先買個New iPad頂著先,起碼螢幕還不錯,4:3看文件(漫畫?)也比較適合點
    網芳上的檔就copy進去再看
    不然老得坐在電腦前看文件(漫畫?)也是挺累人

    想到iPad連裝個嘸蝦米都得JB就很無力…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

 

Scroll to Top
%d 位部落客按了讚: