簡單說,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分享資訊的人越來越少,如果覺得文章對您有幫助,歡迎在底下留言,這樣我也比較有動力繼續寫下去,謝啦!
這東西真的不像一邊問Surface可不可以買,一邊在寫這種看不懂東西的人會說的…XD
哈~要把他寫到看的懂也是可以啦,只是太花時間了,只是筆記~筆記嘛!
話說我還真的想去買台Win8的平版,不過等他出到穩定不知幾時了
不過要符合你的需求,Win8的產品比較有機會,安卓天天改版也不曉得改了啥,iOS一堆限制,連一個檔案管理都沒有
Android是要root才能掛cifs module,能用是能用,但就是麻煩
iOS是完全沒救,就算jb也沒搞頭
Win8是不知要等到幾時…
在想說是不是先買個New iPad頂著先,起碼螢幕還不錯,4:3看文件(漫畫?)也比較適合點
網芳上的檔就copy進去再看
不然老得坐在電腦前看文件(漫畫?)也是挺累人
想到iPad連裝個嘸蝦米都得JB就很無力…