終端複用神器Tmux

記得第一次接觸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的集合,在任務開始前建立一個session,與此任務相關的狀態都會保存在session中,經過從新鏈接session能夠方便的繼續未完成的任務。session最大的最用就是持久的保存工做狀態
  • window:tmux中的window其實就是咱們常說的tab,在chrome中,新開一個tab就會新建一個頁面,tmux也相似
  • pane:單個window能夠分紅若干pane,就像前面使用iterm2分屏同樣

簡單來講就是:session包含window,window包含pane佈局

Session

新建

安裝完成後,在終端直接輸入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的配置在~/.tmux.conf文件中,若是沒有該文件,能夠先新建配置文件。

配置tmux前綴

前面介紹session使用的時候,提到過一些快捷鍵,能夠看到都是prefix+xxx的形式,這裏的prefix是tmux的前綴鍵,默認爲ctrl+b,只有按下prefix,纔會激活tmux,而後再按其餘鍵進行tmux操做,這樣作的一個好處是能夠有效的避免和其餘應用快捷鍵的衝突。

可是若是常常用tmux,就會發現ctrlb這兩個鍵按的不是很舒服,咱們是否能夠修改一個更加舒服的前綴鍵呢?固然是能夠的,只須要在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的時候,默認進入當前目錄。

切換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

若是想要使用快捷鍵調節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 ~ 列出提示信息緩存

Window

前綴 指令 描述
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 快速定位到窗口(輸入關鍵字匹配窗口名稱)

Pane

前綴 指令 描述
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 顯示時鐘

參考

相關文章
相關標籤/搜索