為什麼要用 tmux
如果你對 tmux 的疑問還停留在:我可以開多個 terminal 的 tab 啊,為什麼要用 tmux 呢?那我只能呵呵了。 tmux 的強大之處在於:
可以連線本地或遠端的 sessions
強大的 window 和 pane 管理
在不同的 session 之間移動 window
自動化指令碼
基本概念
tmux 這個單詞是 terminal multiplexer 的縮寫。 tmux 可以讓你在乙個螢幕中管理多個終端視窗。 先看圖:
tmux 架構
session
tmux 是被設計為 cs 結構的。因此當你啟動 tmux 的時候, 實際上你啟動的是 tmux 的 client。
服務端可能也在你的電腦上或者其他伺服器上,總之要連線 client 和 server, 就需要乙個 session。
一般來說乙個 session 對應這乙個 project。
window
乙個 session 包含多個 window,這裡的 window 比較類似一般 terminal 模擬器的 tab。
pane
乙個 window 可以被分割為多個 pane,方便同時檢視多個程序的狀態。
快捷鍵tmux 的快捷鍵可以非常靈活地自定義
配置tmux 的配置檔案位於 $home/.tmux.conf (以及乙個全域性的 /etc/tmux.conf),和大多數 dotfile 一樣,把配置項寫到這個檔案中,啟動 tmux的時候就會自動讀取了。 下面是我會列舉一些常用配置。
字首這個是所有快捷鍵的基礎,設定了乙個 prefix,系統才能知道你後續的操作是對於 tmux 的。
幾乎所有的快捷鍵都是要先輸入 prefix 的。預設的 prefix 是 c-b 。不過這和 emacs 的 back 衝突了。
網上比較主流的設定是 c-a,一來這兩個鍵很近,二來雖然這和 emacs 的回到行首衝突,不過相對於 c-b, c-a 多按幾次也沒有***,並且用的頻率沒那麼高,所以大多數人都會選擇用 c-a 作為 prefix。
當然,也有人覺得 c-t (t for tmux)是乙個不錯的選擇,anyway,把 prefix 當成乙個變數即可。
配置項:
set -g prefix c-a # 設定字首
unbind c-b # 取消預設的字首
set -s escape-time 1 # 設定字首的作用時間
bind c-a send-prefix # 確保可以在其他應用中可以傳送 ctrl-a
常用操作
這裡列出的快捷鍵都是按照上面的配置配好之後的結果。
其中有些操縱是預設值所以並沒出現在配置 list 中。
使用 prefix - ? 可以隨時檢視快捷鍵列表。
session
配置項:
bind c-c new-session # 建立新的 session
bind c-f command-prompt -p find-session 'switch-client -t %%' # 查詢 session
說明:功能
快捷鍵新建 session
prefix - c-c
返回 session
tmux attach -t session-name
列出 sessions
tmux list-sessions
查詢 session
prefix - c-f
重新命名 session
tmux rename-seesion session-name
切換 session
tmux switch -t session-name
window
配置項:
bind -r c-h previous-window # 選定上乙個 window
bind -r c-l next-window # 選定下乙個 window
功能快捷鍵
新建 window
prefix-c
關閉 window
prefix-&
重新命名 window
prefix-,
列出 windows
prefix-w
切換 window
prefix-\[0-9\]
panel
配置項:
bind - splitw -v # 分割成上下兩個視窗
bind | splitw -h # 分割成左右兩個視窗
功能快捷鍵
橫向切分 window
prefix - 豎槓
縱向切分 window
prefix - 橫槓
最大化 pane
prefix-z
改變 pane 的 layout
prefix-space
調整 pane 尺寸
prefix 然後按住(shift)fbnp
切換 pane(順序跳轉)
prefix - o
切換 pane(選擇編號)
prefix - q 然後按對應的編號
模式正如 vi 有不同的模式一樣,tmux 也有自己的模式:
default mode
預設模式,就是我們一直在操作的模式。
copy mode
快捷鍵 prefix-[ 就會進入 copy mode。在這個模式下,你可以檢視歷史記錄,複製貼上內容,類似於 vi 的 normal mode。
command mode
類似於在 emacs 下直接輸入指令。一些複雜或冷門的操作可以在這裡直接呼叫。
clock mode
快捷鍵 prefix-t, 會顯示乙個時鐘。。。這真的不是乙個彩蛋嗎。。。 想要把
prefix 設定成 t 的同學不需要擔心覆蓋掉這個模式了,這模式壓根就沒用啊。。。
高階技巧(外掛程式)
結對程式設計
如果在結對程式設計時兩個腦袋湊在乙個螢幕前是不是有點擠啊。。。 有了 tmux 就不怕啦。只需要乙個 server 端,然後兩個 client 一起連上去。
不但可以共享『螢幕』,還能一起操作同乙個檔案。 這樣的 common pattern 已經有人封裝好了工具了,就是這個 -- wemux。 不但可以選擇共享模式(mirror,pair,rogue)。還可以踢人哦。。。
初始化工作區
什麼?!這個專案需要開啟兩個 redis 埠,乙個 rails server,乙個 sidekiq 程序。 這還是沒包括 mysql 和 es 這樣的常用服務,以及 guard 這樣的可選工具的情況下。
別怕,有了 tmux,一切都是這麼簡單:
試試這個外掛程式吧 -- 叫做 tmuxinator 的乙個 ruby gem。 跟著 readme 操作一下吧,非常容易入門的。
tmux命令使用
使用遠端的伺服器連線,跑部分程式,有時候懶得一直開電腦掛連線,可以使用tmux相關的命令,在伺服器的後台開程序一直跑,不會因為連線斷掉而停止。記錄下tmux的部分命令。tmux介紹 tmux命令是通過和伺服器建立乙個會話 session 我覺得也就是在伺服器端去請求乙個程序,這個程序可以在後台保持執...
tmux 簡單命令
tmux 大概結構圖 如果你已經安裝了tmux,則輸入tmux會進入tmux功能介面 0.tmux ls 列出已經存在session 1.tmux new s foo 新建session 這個是分屏的前提 2.tmux attach t foo 選擇某個session 如果已經有session 3....
工具 Tmux 命令備忘
以下內容來自網路,不再宣告源位址tmux terminal multiplexer tmux可以靈活的分割終端,靈活的將任務分配到不同的session中,而且關掉會話之後重新鏈結,這樣的功能可以實現 1.辦公室的工作關掉後,回家重新鏈結剛才的session,接著工作 2.遠端斷電時,可以不使用scr...