iTerm2 已經(jīng)整合了 tmux城豁,這意味著什么?
通常情況下损肛,當你使用 tmux 的時候凶硅,會在一個「物理」窗口(Window)中創(chuàng)建多個虛擬的窗口缝裁。你可以通過在 tmux 中使用各種命令來操作它的環(huán)境,但這樣也會隨之帶來一些問題:
- 你需要敲下前綴修飾鍵來進入 tmux 的命令模式(默認情況下是
control + b
足绅,這和 emacs 中的左移光標是沖突的捷绑,而且這也會讓與 shell 的交互變得更加困難)。 - 你需要不止一次的使用 ssh 來連接到遠程服務器(remote host)以獲得不止一個的 tmux 會話(session)窗口编检。
- 你需要學習 tmux 的命令胎食。
- 你需要開啟鼠標報告(mouse reporting)來調(diào)整分割窗格(pane)的大小,盡管你并不想啟用它允懂。
- 當你使用 tmux 的時候厕怜,一些終端模擬器內(nèi)置的功能不能很好工作,比如說:你并不能像在普通的終端窗口中那般快捷的使用回滾查看歷史,同時粥航,tmux 的查找功能也完全跟 iTerm2 的不能比擬琅捏。
多余大多數(shù)的用戶而言,在終端中使用復用器[1](multiplexer)是十分好用的工作方式递雀,但是他們并不想接受以上的種種缺陷柄延。
iTerm2 與 tmux 的整合(Term2's tmux integration)就解決了這些痛點。
當你執(zhí)行 tmux -CC
命令時一個新的 tmux 會話就會被創(chuàng)建缀程,一個看上去和普通 iTerm2 窗口沒有差別的窗口將會被打開搜吧。唯一不同的地方就是,當 iTerms2 退出或者是 ssh 會話丟失時杨凑,tmux 會保持運行滤奈。你可以重新連接上剛剛 ssh 連接的遠程主機,然后執(zhí)行 tmux -CC attach
命令撩满,iTerm2 窗口會重新打開并恢復到斷開時相同的狀態(tài)蜒程。那么,一些應用場景就不難想象了:
對于那些常常使用 ssh 的小伙伴來說伺帘,你可以:
- 回到家中然后恢復公司的工作環(huán)境昭躺。
- 不必擔心系統(tǒng)升級的電腦重啟。
而對于所有小伙伴而言伪嫁,你可以:
- 通過連接同一個 tmux 會話和別的小伙伴協(xié)作(collaborate)领炫。
- 保護自己不因 iTerm2 崩潰(iTerm3 會通過會話修復特性來減輕這種狀況)而丟失工作環(huán)境。
用法
你可以一如往常那般使用 tmux礼殊,只需要在末尾加上 -CC
參數(shù)就可以了驹吮,實際上针史,也就是執(zhí)行以下任意一個命令:
tmux -CC
tmux -CC attach
當你執(zhí)行 tmux -CC
命令的時候晶伦,你將會在終端中看到如下的菜單:
** tmux mode started **
Command Menu
----------------------------
esc Detach cleanly.
X Force-quit tmux mode.
L Toggle logging.
C Run tmux command.
- 如果你按下
esc
鍵,tmux 窗口會關(guān)閉啄枕,tmux 客戶端也會終止婚陪。 - 如果你按下
esc
鍵但是任何事情都沒有發(fā)生,這說明 tmux 的客戶端可能崩潰了或者是除了別的狀況频祝。這時按下X
鍵來強制 iTerm2 退出 tmux 模式泌参。如果真是的 tmux 客戶端崩潰的話,你也許會需要執(zhí)行stty sane
命令來恢復你的終端狀態(tài)常空。 - 如果你想提交一個 Bug 的話沽一,可以通過按下
L
鍵來重現(xiàn)問題,tmux 協(xié)議命令會被打印到屏幕上漓糙。 - 如果你想執(zhí)行菜單中沒有的命令铣缠,你可以按下
C
鍵來進入 tmux 命令模式,一個可以輸入命令的對話框?qū)棾觯憧梢枣I入類似new-window
這樣的命令蝗蛙。
通常情況下蝇庭, 大多數(shù)的動作都不需要通過鍵入命令來實現(xiàn),以下的一些 iTerm2 的動作就可以直接作用于 tmux:
- 關(guān)閉會話捡硅,標簽頁(tab)或者是窗口:終止 tmux 會話或窗口哮内。
- 分割窗格:通過
split-window
分割 tmux 窗口。 - 調(diào)整窗格大凶尘隆:通過
resize-pane
命令調(diào)整 tmux 窗格大小北发。 - 調(diào)整窗口大小:告訴 tmux 客戶端的大小改變了喷屋,重調(diào)所有窗口的大小鲫竞。窗口不會大于它連接(attach)的最小的客戶端的大小,一個灰色的區(qū)域?qū)霈F(xiàn)的窗口的右下方表明實際窗口的大小超出了 tmux 窗口允許的最大大小逼蒙。這一原則的一個好處就是所有的 tmux 窗口/標簽頁都包含完全相同的行數(shù)和列數(shù)从绘。
- 通過菜單欄 Shell->tmux 創(chuàng)建一個新的窗口或者標簽頁:創(chuàng)建一個新的 tmux 窗口。
- 通過菜單欄 Shell->tmux->Detach 斷開(detach)與 tmux 會話的連接:斷開與 tmux 會話的連接是牢,所有 tmux 窗口都會被關(guān)閉场绿,你可以通過
tmux -CC attach
命令重新與之連上。
限制
大多數(shù)的限制都將會在接下來的版本中得到解決和改進:
- 在早于2.9版本的 iTerm2 中踪少,你只能同時連接上一個 tmux 會話哆窿。在2.9和更新的版本中,你可以同時連接多個 tmux 會話社搅。
-
.tmuxrc
文件未經(jīng)測試驻债,可能運轉(zhuǎn)不正常。 - 在早于2.9版本的 iTerm2 中形葬,不能最大化窗格合呐,已經(jīng)在2.9版本中解決了這一問題。
創(chuàng)建 tmux
你需要使用1.8或更高版本的 tmux笙以,在 Mac 上安裝 tmux 最簡便的方法是使用 homebrew
:
brew install tmux
-
What is a terminal multiplexer? It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. And do a lot more. ?