Tmux入門教程

張偉傑發表於2018-02-18

WHY

使用Tmux有很多好處。我最看重的是,

  1. 遠端伺服器上持久地儲存工作狀態。比如,我在本地或伺服器做某項工作,需要在Terminal開啟幾個視窗。每次換工作,還需要切換。用Tmux,便可以按照Session進行管理,每次輕鬆開啟切換。
  2. 隨時隨地斷開或連線Session。比如,在伺服器上面執行一條命令,但是擔心連線斷開後命令終止,此時在tmux中執行命令,此時斷閘道器機便問題不大,只需隨後恢復Session便可以

Install

伺服器上需要根據具體作業系統安裝,包管理一般支援。若不支援,請參考GitHub - tmux/tmux: tmux source code。 Mac上只需如下命令:

brew install tmux
複製程式碼

Config

Tmux預設不支援滑鼠滾動檢視視窗中的前後內容。需要修改配置來支援。

touch ~/.tmux.conf

# 開啟滑鼠模式
set-option -g mouse on

# 允許滑鼠選擇窗格
# set -g mouse-select-pane on# 如果喜歡給視窗自定義命名,那麼需要關閉視窗的自動命名
set-option -g allow-rename off
​
# 如果對 vim 比較熟悉,可以將 copy mode 的快捷鍵換成 vi 模式
set-window-option -g mode-keys vi
複製程式碼

如果對滑鼠滾動效果依舊不滿意,可以參考這篇blog:Better mouse scrolling in Tmux

Conception

tmux的主要元素分為三層:

  • Session 一組視窗的集合,通常用來概括同一個任務。session可以有自己的名字便於任務之間的切換。
  • Window 單個可見視窗。Windows有自己的編號,也可以認為和ITerm2中的Tab類似。
  • Pane 窗格,被劃分成小塊的視窗,類似於Vim中 C-w +v 後的效果。 一圖以蔽之:
    conception.jpg

Session

Tmux為了防止與全域性快捷鍵衝突,大部分快捷鍵需要先需要輸入字首Ctrl + b,下文用Prefix代替。

Session主要相關命令如下:

# 建立
tmux new # 不指定session name
tmux new -s [session-name]

# 刪除Session
tmux kill-session -t [session-name]
tmux kill-server

# 列出當前Session
tmux ls # 
Prefix s # tmux 內

# 恢復Session
tmux a -t [session-name]
tmux a

# 斷開Session
tmux detach
Prefix d

# 重新命名Session
Prefix $
複製程式碼

Window

# 建立
Prefix c

# 選擇視窗
Prefix + [number] # 選擇第n個視窗
Prefix + p/n	# 前/後一個視窗

# 關閉視窗
Prefix &
exit

# 列出所有window(包含其他Session)
Prefix w 
j/k # 前後選擇

# 搜尋視窗
Prefix f

# 重新命名當前視窗
Prefix ,
複製程式碼

Pane

# 建立
Prefix %	# 水平窗格
Prefix '"'	# 垂直窗格

# 關閉
Prefix x

# 切換
Prefix o # 在窗格間切換
Prefix q	# 顯示窗格編號,輸入編號切換

# 將當前窗格切換到新視窗
Prefix !

# 窗格交換位置
Prefix + {/}
複製程式碼