第六章 多工視窗 (tmux / screen)
在非常非常久以前, 還沒在使用 GUI 視窗介面時, 就可以使用 screen 這種類似視窗切換的東西了。在以前的年代, 甚至也不大使用滑鼠, 但也因為這樣, 反而更好用, 光是使用鍵盤按幾個鍵, 你可以用幾個快速鍵變換視窗 (雖然當時其實整個介面都是純文字的), 一次多工。
到了現在, 雖然 terminal 都可以有 tab 了, 但以前的這種用法其實還是方便許多。例如, 當你遠端使用 ssh 的時候, 你就算斷線了, 或從辦公室回家了, 你還是可以再連回去還原你剛剛遠端的所有視窗 (或說你的 session)。真的非常方便。
筆者在多年以前就很習慣使用 screen, 因此已經很熟悉 screen 原本的按鍵組合, 但後來轉用 tmux, 因此這邊介紹的會是 tmux, 但是透過設定檔讓大部分的按鍵跟 screen 一樣。
安裝
安裝 tmux 很簡單, 在 Ubuntu (Debian-like) 使用 apt-get
$ sudo apt-get install tmux
或是在 macOS 底下用 brew
$ brew install tmux
設好設定檔
編輯 ~/.tmux.conf
並且將連結 (mac) (linux) 的內容貼上並存檔。
進入 tmux
直接在 command line 打 tmux
進入
$ tmux
視窗操作
在 tmux 裡面, 指令都是 Ctrl-A
開頭的。例如, 你可以按下 Ctrl-A c
開一個新的視窗。這個的按法就是先按了 Ctrl-A
之後, 再按小寫 c。
開好視窗之後, 你可以用 Ctrl-A ##
(數字鍵) 跳視窗, 例如 Ctrl-A 0
跳到第 0 個視窗。如果你開了超過 9 個視窗, 你發現你無法跳到 10、11 等等, 你可以用 Ctrl-A '
, 然後再輸入視窗號碼。
你也可以用 Ctrl-A 空白
跳下一個視窗, 以及 Ctrl-A 倒退鍵
跳前一個視窗。這樣就可以快速的前後視窗交互使用。
收合
如果你想要先暫時離開, 之後再用, 你可以用 Ctrl-A d
將你的 tmux 的視窗們收起來。如果你之後要再回復, 可以用下面的指令
$ tmux attach -d
如果你有好多組 tmux, 你可以用 Ctrl-A $
來命名你這一組視窗們的名字, 然後用
$ tmux attach list-sessions
就可以看到他們的名稱, 然後同樣用 attach -d
但是後面加上名稱就可以指定要回復哪一個了 (假設我要回復的叫做 pyconbingo)
$ tmux attach -d pyconbingo
如果你沒有幫他們取名字的話, 那就會是數字, 譬如
你會看到有兩個 tmux 可以回復, 一個是 0 (開了四個視窗), 一個是 1 (開了一個視窗)
使用時機
應該說只要開發程式的時候, 就很常開 tmux 跟一堆視窗來開發。你可能一個視窗是編輯 CSS styles, 一個視窗是 js, 一個視窗是後端的程式碼, 然後也許一個視窗用來跑 dev server。
如果搭配遠端使用的話, 就是 ssh
或 mosh
到遠端, 然後開 tmux, 等到要跳出來的時候, 用 Ctrl-A d
將 tmux 收起來, 下一次要連進去的時候, 再用 tmux attach -d
就可以回復原本開好的那些視窗了。