背景
linux下工作環境,經常見到打開幾十個終端,而且不捨得關閉的情況。即使redhat支持終端標籤頁,redhat支持多個工作區;但仍顯得十分混亂。
終端的layout佈局位置,不能保存。爲了保持操作環境的整潔,經常出現關閉後又一一還原打開的情況。
於是,需要一個可以後臺維持的終端工具(這個工具,就是tmux),而且可以存儲加載終端的layout佈局位置;這樣就可以隨時調取/隱藏(tmux叫attach/detach),得到期望的並且是當前唯一的終端界面。
另外,網上說,tmux也支持ssh登錄界面的保存;這相當於實現了一個功能:一鍵打開n個ssh操作終端。
主要操作實現
安裝
參考:
Tmux 速成教程:技巧和調整
http://blog.jobbole.com/87584/
概念瞭解
- session(類似一個針對終端的project name)
- window(類似終端的標籤頁)
- pane(終端的分屏,這個feature挺重要的)
- 複製模式(因爲不追求丟棄鼠標的全鍵盤操作,所以不細看tmux這部分內容了;後來體驗幾天發現,複製模式還是有必要了解,依靠鼠標,一些操作無法實現)
- tmux最新版[當前使用的是tmux 2.5版本]和老版本的命令,是有區別的,所以百度的很多命令是不適用的。
快捷鍵
首先,默認終端裏,輸入tmux,就進入了tmux的界面;tmux的界面與默認終端界面是一致的。只有進入tmux界面,才能使用tmux的快捷鍵;雖然,默認終端下,也支持tmux操作,但沒有快捷鍵支持啊。
快捷鍵是可以定製的。
常用快捷鍵/命令需求 | 描述 |
---|---|
開始tmux | 終端命令:tmux |
ctrl+b | prefix,命令的前綴 |
新建一個session(會話) | 終端命令:tmux new -s projectxxx |
脫離detach當前session | ctrl+b d |
加入attach一個session | 終端命令:tmux attach -t projectxxx |
查看tmux後臺的session | 終端命令:tmux ls |
關閉一個session | tmux裏直接exit,或者終端命令:tmux kill-session -t projectxxx |
新建一個window | ctrl+b c |
跳轉至windows #1 | ctrl+b 1 |
垂直分屏 | ctrl+b % |
水平分屏 | ctrl+b “ |
關閉某個分屏 | 直接exit即可,或者ctrl+b x |
分屏間的光標移動 | ctrl+b 上下左右按鍵 |
參考:
Tmux常用快捷鍵以及我會常到的一些問題彙總 - piperck - 博客園
http://www.cnblogs.com/piperck/p/4992159.html
tmux重啓後恢復終端layout界面的方法
注意:tmux是不支持重啓後恢復終端layout界面的。只要不重啓,tmux是一直後臺執行的。
當然,我需要tmux在重啓後,仍有恢復終端layout的能力。方法參考:
自動給tmux現場做備胎
https://segmentfault.com/a/1190000006232298
唯一需要補充的就是,tmux 插件的安裝,ctrl+b r之後,沒有任何信息提示,等插件安裝完成後,纔會有安裝已完成的信息。
另外,插件也可以一個個手動安裝,也不麻煩。
功能 | 描述 |
---|---|
保存tmux的設置環境 | ctrl+b ctrl+s |
加載tmux的最新設置環境 | ctrl+b ctrl+r |
如果有多個用戶,比如admin/qilei等
單獨一個tmux,打開多用戶的終端,是沒有問題。只不過保存恢復的操作,會有問題。解決辦法如下:
- 先終端進入期望用戶;然後再執行tmux。
- tmux的配置目錄,需要複製到各個用戶主目錄裏。
新建windows或者pane(分屏),保留目錄路徑
bind c new-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind " split-window -c "#{pane_current_path}"
複製模式
Ctrl+b [
進入複製模式,空格標記複製開始,回車結束複製。
同樣,適用於終端上下屏幕的移動瀏覽。按q,就退出複製模式。
Ctrl+b ]
粘貼最後一個緩衝區內容
~/.tmux.conf裏增加下句,使複製模式類似vi操作
setw -g mode-keys vi
爲了更適應vi操作,
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
unbind-key -T copy-mode-vi v
bind-key -T copy-mode-vi 'v' send -X begin-selection # Begin selection in copy mode.
bind-key -T copy-mode-vi 'C-v' send -X rectangle-toggle # Begin selection in copy mode.
bind-key -T copy-mode-vi 'y' send -X copy-selection # Yank selection in copy mode.
支持鼠標模式
set -g mouse on
這樣就可以支持鼠標滾輪/pagedown等普通操作了。
窗口列表居中(否則session和windows名稱會重疊)
set -g status-justify centre
其它
剛剛使用,還未考慮更細節的東西。