tmux 快速入門

為什么要用 tmux

如果你對 tmux 的疑問還停留在:我可以開多個 terminal 的 tab 啊,為什么要用 tmux 呢?那我只能呵呵了。 tmux 的強(qiáng)大之處在于:

  • 可以連接本地或遠(yuǎn)程的 sessions
  • 強(qiáng)大的 window 和 pane 管理
  • 在不同的 session 之間移動 window
  • 自動化腳本

基本概念

tmux 這個單詞是 terminal multiplexer 的縮寫。 tmux 可以讓你在一個屏幕中管理多個終端窗口。 先看圖:

tmux 架構(gòu)

session

tmux 是被設(shè)計為 cs 結(jié)構(gòu)的。因此當(dāng)你啟動 tmux 的時候, 實際上你啟動的是 tmux 的 client。
服務(wù)端可能也在你的電腦上或者其他服務(wù)器上,總之要連接 client 和 server, 就需要一個 session。
一般來說一個 session 對應(yīng)這一個 project。

window

一個 session 包含多個 window,這里的 window 比較類似一般 terminal 模擬器的 tab。

pane

一個 window 可以被分割為多個 pane,方便同時查看多個進(jìn)程的狀態(tài)。

快捷鍵

tmux 的快捷鍵可以非常靈活地自定義

配置

tmux 的配置文件位于 $HOME/.tmux.conf (以及一個全局的 /etc/tmux.conf),和大多數(shù) dotfile 一樣,把配置項寫到這個文件中,啟動 tmux的時候就會自動讀取了。 下面是我會列舉一些常用配置。

前綴

這個是所有快捷鍵的基礎(chǔ),設(shè)定了一個 prefix,系統(tǒng)才能知道你后續(xù)的操作是對于 tmux 的。
幾乎所有的快捷鍵都是要先輸入 prefix 的。默認(rèn)的 prefix 是 C-b 。不過這和 emacs 的 back 沖突了。
網(wǎng)上比較主流的設(shè)定是 C-a,一來這兩個鍵很近,二來雖然這和 emacs 的回到行首沖突,不過相對于 C-b, C-a 多按幾次也沒有副作用,并且用的頻率沒那么高,所以大多數(shù)人都會選擇用 C-a 作為 prefix。
當(dāng)然,也有人覺得 C-t (t for tmux)是一個不錯的選擇,anyway,把 prefix 當(dāng)成一個變量即可。

配置項:

set -g prefix C-a # 設(shè)定前綴
unbind C-b  # 取消默認(rèn)的前綴
set -s escape-time 1 # 設(shè)定前綴的作用時間
bind C-a send-prefix # 確??梢栽谄渌麘?yīng)用中可以發(fā)送 Ctrl-A

常用操作

這里列出的快捷鍵都是按照上面的配置配好之后的結(jié)果。
其中有些操縱是默認(rèn)值所以并沒出現(xiàn)在配置 list 中。

使用 prefix - ? 可以隨時查看快捷鍵列表。

session

配置項:

bind C-c new-session # 創(chuàng)建新的 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
關(guān)閉 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
調(diào)整 pane 尺寸 prefix 然后按住(shift)FBNP
切換 pane(順序跳轉(zhuǎn)) prefix - o
切換 pane(選擇編號) prefix - q 然后按對應(yīng)的編號

模式

正如 vi 有不同的模式一樣,tmux 也有自己的模式:

default mode

默認(rèn)模式,就是我們一直在操作的模式。

copy mode

快捷鍵 prefix-[ 就會進(jìn)入 copy mode。在這個模式下,你可以查看歷史記錄,復(fù)制粘貼內(nèi)容,類似于 vi 的 normal mode。

command mode

類似于在 emacs 下直接輸入指令。一些復(fù)雜或冷門的操作可以在這里直接調(diào)用。

clock mode

快捷鍵 prefix-t, 會顯示一個時鐘。。。這真的不是一個彩蛋嗎。。。 想要把
prefix 設(shè)置成 t 的同學(xué)不需要擔(dān)心覆蓋掉這個模式了,這模式壓根就沒用啊。。。

高階技巧(插件)

結(jié)對編程

如果在結(jié)對編程時兩個腦袋湊在一個屏幕前是不是有點擠啊。。。 有了 tmux 就不怕啦。只需要一個 server 端,然后兩個 client 一起連上去。
不但可以共享『屏幕』,還能一起操作同一個文件。 這樣的 common pattern 已經(jīng)有人封裝好了工具了,就是這個 -- wemux。 不但可以選擇共享模式(mirror,pair,rogue)。還可以踢人哦。。。

初始化工作區(qū)

什么?!這個項目需要開啟兩個 redis 端口,一個 rails server,一個 sidekiq 進(jìn)程。 這還是沒包括 mysql 和 es 這樣的常用服務(wù),以及 guard 這樣的可選工具的情況下。
別怕,有了 tmux,一切都是這么簡單:
試試這個插件吧 -- 叫做 tmuxinator 的一個 ruby gem。 跟著 README 操作一下吧,非常容易入門的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容