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 ( )裏面
有個判斷滑鼠游標是不是放在狀態列上的地方

280
281
282
283
284
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″)

280
281
282
283
284
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吧?

在 “TMUX – The Terminal Multiplexer” 有 5 則留言

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

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

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

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

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

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *