2015/11/09

tmux: 與終端機共舞的好夥伴

  自從使用tmux以來,我的工作效率提高不少,因為tmux解決了我使用終端機做事時的兩大煩惱:
1. 開多個console:常常遇到的情況就是只開一個console不夠用,要開好幾個。這時候的解法可能是終端機多開幾個,或是多開分頁。只是有時候這樣跳來跳去的,事情都還沒做完,就已經頭昏腦脹了!
2. 保持工作狀態:有時候做事前需要先把環境設好,例如設定環境變數,但關閉終端機重開後又可能要再重新設定實在很麻煩!或是有時候要讓某些長時的工作持續進行,例如當要ssh連進某server來編譯一個很大的程式時,想要離開電腦一下給他自己跑,但這段期間若網路不穩斷線,人回來後又要再連回去從中途再編一次,時間就這樣給浪費掉了!
如果你也有以上煩惱,也一起來使用tmux吧!兩大問題一起解決!

  tmux可以在終端機中開session,一個session中可以開多個window,一個window又可以被多個水平或垂直的pane所分割。每個window或是pane都是個console,就不用開多的終端機或分頁來搞自己了。session/window/pane之間的關係可以看下圖會更清楚:(圖片來源)
上圖右的範例是一個session中開3個window,其中一個window被3個pane所分割。

  tmux另一個神奇功能就是attach/detach。當你暫時不想用某個session時,可以"detach"這個session,這個detached session中的工作會改在背景跑(也就是工作狀態仍保持著),下次只要"attach"這個session就可以繼續使用了。只要幾個指令就可以完成,非常方便!

  說了這麼多話來"吹捧"tmux,接下來就是要實際安裝與使用啦。tmux的安裝非常簡單,只要用套件管理程式應該都找的到,像是使用Ubuntu只要輸入以下指令即可:
$ sudo make install tmux
再來就是新開一個session,輸入指令:
$ tmux
就會看到類似以下的畫面出現:


  當我們很快樂地安裝與開session後,再來的疑問可能是:要怎麼開多個window呢?在此之前先介紹tmux有類似vim的指令模式,只要按下ctrl b(按ctrl鍵不放再按b)就會到tmux的指令模式,接下來再按下c就會開一個新window了。下圖是再新開3個window的畫面:


  除了新增window之外,應該還會有其他需求吧?以下列了我個人常用於操作window的指令(個人因為工作的螢幕不大,所以不常使用pane,其他好用指令可以參考這篇這篇)
  • ctrl b + c:新增一個window
  • ctrl b + :關閉當前window
  • ctrl b + n:移動到下一個window
  • ctrl b + p:移動到上一個window
  • ctrl b + [:(非常推薦使用)當前的window跳到copy-mode,可以按Page UpPage Down來瀏覽console之前output出來的訊息,按/可以搜尋字串。要離開scroll mode時按下q即可

  現在可以在多個window之間雲遊四海,接下來可能會想:暫時不想用此session要怎麼detach?很簡單,只要輸入ctrl b + d就可以囉!以下介紹我常用來管理session的指令
  • ctrl b + d:detach當前attached session
  • tmux:新開一個session
  • tmux ls:列出所有session,如下圖範例是開三個session後,列出來的結果。每行最前面的數字代表那個session的名稱
  • tmux attach -t <name>:attach名稱為<name>的session
  • tmux rename-session -t <old-name> <new-name>:將名稱為<old-name>的session重新命名為<new-name>
  • tmux kill-session -t <name>:將名稱為<name>的session砍掉
  • tmux kill-server:砍掉tmux server,也會砍掉所有session,沒事別亂用XD

  以上指令應該就能應付大部分要求,用習慣後後會覺得世界大不同呢!接下來如果想要個人化你的tmux設定,可以參考我的另一篇個性化你的tmux: 使用tony/tmux-config與tmux-mem-cpu-load喔!

相關連結推薦:
(影片) Tmux Quick Start

沒有留言:

張貼留言