記得第一次接觸tmux是在一年前,當時是爲了複用終端,不想開多個item2的tab,可是後來發現徹底不會用,就一直擱在那兒,直到半年前再次拿起來,開始學習一些tmux的用法,現在半年過去了,真正的明白了爲何說tmux是神器。linux
在用tmux以前一直都是用的iterm2(在mac上很好用的終端)原生的新開tab和分屏,其實也還好,界面看起來就像這樣:git
可是分屏不少以後,能夠看到不少狀態欄,並非很美觀,對比tmux的分屏,看起來就要hack不少,tmux的分屏界面以下:github
正是基於這個緣由,開始學着始使用tmux。chrome
tmux的倉庫:github.com/tmux/tmuxvim
首先安裝tmux:緩存
# mac安裝
brew install tmux
# linux 安裝
sudo apt-get install tmux
複製代碼
開始學習tmux以前首先要明確幾個概念:session
簡單來講就是:session包含window,window包含pane佈局
安裝完成後,在終端直接輸入tmux
便可進入tmux。進入以後能夠看到session的名字是0,這是由於咱們直接輸入tmux
會建立一個無名的會話,若是想要新建session的時候給session命名,可使用如下命令:學習
tmux new -s your-session-name
複製代碼
若是想要斷開當前session可使用ui
tmux detach # 斷開當前會話
複製代碼
或者使用快捷鍵[prefix]+d
,其中prefx
默認爲ctrl+b
退出session以後,想要恢復以前工做的區域,直接在終端輸入:
tmux attach-session -t your-session-name
# 能夠簡寫
tmux a -t your-session-name
複製代碼
其中session-name
是可選的,若是不輸入,默認進入第一個會話。
使用完成後,要關閉,可使用tmux kill
命令,kill
有如下四種:
kill-server
:關閉sessions,clients和server,這個命令會將tmux建立的都關閉kill-session
kill-window
kill-pane
# 關閉session
tmux kill-session -t your-session-name
# 關閉全部
tmux kill-server
複製代碼
tmux list-session
# 簡寫
tmux ls
複製代碼
或者使用快捷鍵prefix+s
查看全部session,prefix+w
查看全部window。
tmux的配置在~/.tmux.conf
文件中,若是沒有該文件,能夠先新建配置文件。
前面介紹session使用的時候,提到過一些快捷鍵,能夠看到都是prefix+xxx
的形式,這裏的prefix
是tmux的前綴鍵,默認爲ctrl+b
,只有按下prefix
,纔會激活tmux,而後再按其餘鍵進行tmux操做,這樣作的一個好處是能夠有效的避免和其餘應用快捷鍵的衝突。
可是若是常常用tmux,就會發現ctrl
和b
這兩個鍵按的不是很舒服,咱們是否能夠修改一個更加舒服的前綴鍵呢?固然是能夠的,只須要在tmux的配置文件中解綁原有的prefix
並修改爲咱們自定義的便可。配置以下:
set -g prefix C-a
# 解綁原有的prefix
unbind C-b
bind C-a send-prefix
複製代碼
配置完成後,須要重啓tmux,或者按下ctrl+b
,而後輸入:
進入命令模式,輸入:
source-file ~/.tmux.conf
複製代碼
或者咱們給讓配置生效添加快捷鍵:
bind r source-file $HOME/.tmux.conf \; display-message 'Config reloaded'
複製代碼
這樣,直接輸入prefix+r
就可讓配置生效。
在tmux中,水平和豎直分屏默認快捷鍵爲prefix+"
和 prefix+%
,這兩個鍵能夠說不多用並且不容易按到,咱們能夠自定義本身習慣的快捷鍵,對於對vim熟悉的用戶,能夠將其設置爲跟vim同樣的快捷鍵:
bind C-h splitw -v -c '#{pane_current_path}'
bind C-v splitw -h -c '#{pane_current_path}'
複製代碼
這裏的splitw
實際上是split-window
的縮寫,-c '#{pane_current_path}'
表示在打開新pane的時候,默認進入當前目錄。
在iterm2中,切換標籤的快捷鍵是commond+option+方向鍵
或commond+[
或commond+]
,相應的在tmux中,切換pane默認快捷爲prefix+方向鍵
可是方向鍵自己和ctrl
離的太遠,操做不方便,一樣的咱們能夠設置本身喜歡的快捷鍵,例如設置跟vim同樣的快捷鍵(這裏多說一句,其實在vim中最經常使用的控制方向的鍵就是hjkl,若是習慣使用vim,能夠設置tmux與之相同快捷鍵)。
bind h select-pane -L # up
bind j select-pane -D # down
bind k select-pane -U # left
bind l select-pane -R # right
複製代碼
在剛上手tmux的時候,總以爲各類命令很麻煩,並且很差記,若是支持鼠標就更好了,其實想要支持鼠標,只須要在配置文件中開啓便可:
set-option -g mouse on
複製代碼
開啓鼠標以後,切換pane能夠直接點擊激活,調整分屏大小能夠直接拖拽實現。
固然了,既然使用了tmux,目的就不僅是界面好看而已,而是要提升效率,因此儘可能少用鼠標😏
若是想要使用快捷鍵調節pane大小,一樣能夠設置快捷鍵實現:
bind H resize-pane -L 10 # 向左擴展10
bind L resize-pane -R 10 # 向右擴展10
bind K resize-pane -U 5 # 向上擴展5
bind J resize-pane -D 5 # 向下擴展5
複製代碼
這樣經過prefix+HJKL
實現pane的擴展
前綴 | 指令 | 描述 |
---|---|---|
Ctrl+b | ? | 顯示快捷鍵幫助文檔 |
Ctrl+b | d | 斷開當前會話 |
Ctrl+b | D | 選擇要斷開的會話 |
Ctrl+b | Ctrl+z | 掛起當前會話 |
Ctrl+b | r | 強制重載當前會話 |
Ctrl+b | s | 顯示會話列表用於選擇並切換 |
Ctrl+b | : | 進入命令行模式,此時可直接輸入ls等命令 |
Ctrl+b | [ | 進入複製模式,按q退出 |
Ctrl+b | ] | 粘貼複製模式中複製的文本 |
Ctrl+b | ~ | 列出提示信息緩存 |
前綴 | 指令 | 描述 |
---|---|---|
Ctrl+b | c | 新建窗口 |
Ctrl+b | & | 關閉當前窗口(關閉前需輸入y or n確認) |
Ctrl+b | 0~9 | 切換到指定窗口 |
Ctrl+b | p | 切換到上一窗口 |
Ctrl+b | n | 切換到下一窗口 |
Ctrl+b | w | 打開窗口列表,用於且切換窗口 |
Ctrl+b | , | 重命名當前窗口 |
Ctrl+b | . | 修改當前窗口編號(適用於窗口從新排序) |
Ctrl+b | f | 快速定位到窗口(輸入關鍵字匹配窗口名稱) |
前綴 | 指令 | 描述 |
---|---|---|
Ctrl+b | " | 當前面板上下一分爲二,下側新建面板 |
Ctrl+b | % | 當前面板左右一分爲二,右側新建面板 |
Ctrl+b | x | 關閉當前面板(關閉前需輸入y or n確認) |
Ctrl+b | z | 最大化當前面板,再重複一次按鍵後恢復正常(v1.8版本新增) |
Ctrl+b | ! | 將當前面板移動到新的窗口打開(原窗口中存在兩個及以上面板有效) |
Ctrl+b | ; | 切換到最後一次使用的面板 |
Ctrl+b | q | 顯示面板編號,在編號消失前輸入對應的數字可切換到相應的面板 |
Ctrl+b | { | 向前置換當前面板 |
Ctrl+b | } | 向後置換當前面板 |
Ctrl+b | Ctrl+o | 順時針旋轉當前窗口中的全部面板 |
Ctrl+b | 方向鍵 | 移動光標切換面板 |
Ctrl+b | o | 選擇下一面板 |
Ctrl+b | 空格鍵 | 在自帶的面板佈局中循環切換 |
Ctrl+b | Alt+方向鍵 | 以5個單元格爲單位調整當前面板邊緣 |
Ctrl+b | Ctrl+方向鍵 | 以1個單元格爲單位調整當前面板邊緣(Mac下被系統快捷鍵覆蓋) |
Ctrl+b | t | 顯示時鐘 |