tmux是一款終端複用工具,我主要在ssh時使用它。相似的有screen,之後有空再學。git
當初在windows上可使用xshell進行ssh鏈接,很是好用。換到mac上就沒有那麼好用的工具了,只能使用terminal或者iterm2,克隆會話啥的須要配置,比較麻煩,仍是學學tmux比較好。github
最多見的使用場景就是使用tmux開左右兩個pane,一邊vim,一邊shell或者看日誌。shell
sessionvim
會話,一個服務器上能夠包含多個session,在終端輸入tmux
就能夠打開一個新的sessionwindows
window服務器
窗口,一個session能夠包含多個windowmarkdown
panesession
面板,一個window能夠包含多個pane(即分屏)ssh
最開始只須要掌握如下幾個命令工具
<ctrl+b>
默認的prefix-command?
列出全部快捷鍵,按q
返回%
左右分屏"
上下分屏方向鍵
在pane之間轉換x
關閉當前pane&
關閉當前window掌握了這幾個命令,基本就能使用tmux了
最重要的就是記住<ctrl+b>
這個prefix-command,在tmux內執行任何操做前都須要按這個組合鍵。這個前綴組合按鍵固然是能夠在配置文件裏修改的,後面會介紹。
主要介紹一下比較經常使用的進階操做,過於冷門的操做就不作介紹了。
如下操做,在終端中執行時須要加上tmux
,如新建一個名爲「test」的session的命令爲tmux new -s "test"
;在tmux內,先按ctrl+b
,而後輸入:
就能夠敲命令了
new # Create a new session -s "Session" # Create named session -n "Window" # Create named Window -c "/dir" # Start in target directory attach # Attach last/available session -t "#" # Attach target session -d # Detach the session from other instances ls # List open sessions -a # List all open sessions lsw # List windows -a # List all windows -s # List all windows in session lsp # List panes -a # List all panes -s # List all panes in session -t # List all panes in target kill-window # Kill current window -t "#" # Kill target window -a # Kill all windows -a -t "#" # Kill all windows but the target kill-session # Kill current session -t "#" # Kill target session -a # Kill all sessions -a -t "#" # Kill all sessions but the target
在tmux內,先按ctrl+b
:
命令 | 說明 |
---|---|
s | 列出全部session,而後能夠切換session |
$ | 重命名當前session |
d | 離開當前session,回到終端 |
在tmux內,先按ctrl+b
:
命令 | 說明 |
---|---|
c | create window,新建窗口 |
& | 關閉當前窗口 |
數字鍵 | 切換到指定窗口 |
w | 列出全部窗口,而後能夠切換窗口 |
, | 重命名當前窗口 |
p | previous window,切換到上一窗口 |
n | next window,切換到下一窗口 |
l | 先後窗口間互相切換 |
. | 修改當前窗口編號,只能改成當前沒被佔用的編號 |
f | find window,在全部窗口中查找關鍵詞,便於在多個窗口間切換 |
在tmux內,先按ctrl+b
:
命令 | 說明 |
---|---|
" | 將當前面板上下分屏 |
% | 將當前面板左右分屏 |
x | 關閉當前面板 |
方向鍵 | 選擇對應的面板 |
q | 顯示當前窗口內全部面板的編號,立刻按下數字鍵可轉到指定面板 |
z | tmux1.8加入的功能,將當前面板最大化 |
o | 選擇當前窗口中下一個面板 |
ctrl+方向鍵 | 以1個單元格爲單位移動邊緣以調整當前面板大小 |
alt+方向鍵 | 以5個單元格爲單位移動邊緣以調整當前面板大小 |
ctrl+b [
進入複製模式setw -g mode-keys vi
來使用vi模式進行移動空格鍵
以後再移動光標就能夠開始選擇文本了回車鍵
完成複製ctrl+b ]
粘貼配置文件爲~/.tmux.conf,在tmux啓動時自動加載設置,如同vimrc。
可配置內容包括通用內容(編碼、歷史記錄、鼠標等)、快捷鍵綁定、主題和UI。
我只設置了底部狀態欄的樣式,效果以下圖:
配置內容爲:
# 替換prefix key # set-option -g prefix C-a # 顏色 set -g status-bg black set -g status-fg white # 位置 set-option -g status-justify centre # 左側 set-option -g status-left '#[bg=black,fg=green][#[fg=cyan]#S#[fg=green]]' set-option -g status-left-length 20 # 中間的window列表 setw -g automatic-rename on set-window-option -g window-status-format '#[dim]#I:#[default]#W#[fg=grey,dim]' set-window-option -g window-status-current-format '#[fg=cyan,bold]#I#[fg=blue]:#[fg=cyan]#W#[fg=dim]' #右側 set -g status-right '#[fg=green][#[fg=cyan]%Y-%m-%d#[fg=green]]' # 鼠標滾屏 set-option -g mouse on # 0太遠了 set -g base-index 1 # f11 f12用於切換窗口 bind -n F11 previous-window bind -n F12 next-window