Tmux 配置:打造最適合本身的終端複用工具

image-20190621001230589

若是說有什麼工具能夠用相見恨晚 來形容的話,Tmux 算一個。html

Tmuxs 是一款優秀的終端複用工具,使用它最直觀的好處就是,經過一個終端登陸遠程主機並運行tmux後,在其中能夠開啓多個控制檯而無需再「浪費」多餘的終端來鏈接這臺遠程主機;git

功能

  • 提供了強勁的、易於使用的命令行界面。
  • 可橫向和縱向分割窗口。
  • 窗格能夠自由移動和調整大小,或直接利用四個預設佈局之一。
  • 支持 UTF-8 編碼及 256 色終端。
  • 可在多個緩衝區進行復制和粘貼。
  • 可經過交互式菜單來選擇窗口、會話及客戶端。
  • 支持跨窗口搜索。
  • 支持自動及手動鎖定窗口。
  • 能夠自由配置綁定快捷鍵。

Tmux 重要概念

使用 Tmux 的時候千萬不要去背指令,全部的指令均可以在 .tmux.conf 配置文件中綁定本身順手的快捷鍵,也能夠配置開啓鼠標。github

這個是個人配置文件:https://github.com/zuorn/tmux.conf編程

在Tmux邏輯中,須要分清楚Server > Session > Window > Pane這個大小和層級順序是極其重要的,直接關係到工做效率:ubuntu

  • Server:是整個tmux的後臺服務。有時候更改配置不生效,就要使用tmux kill-server來重啓tmux。
  • Session:是tmux的全部會話。我以前就錯把這個session當成窗口用,形成了不少不便裏。通常只要保存一個session就足夠了。
  • Window:至關於一個工做區,包含不少分屏,能夠針對每種任務分一個Window。以下載一個Window,編程一個window。
  • Pane:是在Window裏面的小分屏。最經常使用也最好用

瞭解了這個邏輯後,整個Tmux的使用和配置也就清晰了。
(ps:下面這種方便好看的Status bar狀態欄,顯示的是windows,而不是sessions)
-w318segmentfault

安裝

在 Mac OS 中,經過 brew 安裝windows

brew install tmux

ubuntu版本下直接apt-get安裝centos

sudo apt-get install tmux

centos7版本下直接yum安裝緩存

yum install -y tmux

​```sh
centos6版本須要編譯安裝

​```sh
yum install libevent libevent-devel ncurses-devel
tar -zvxf tmux-2.3.tar.gz # (提早下載:wget https://github.com/tmux/tmux/releases/download/2.3/tmux-2.3.tar.gz)
cd tmux-2.3
./configure
make && make install

Tmux 經常使用命令

#啓動新session:
$ tmux [new -s 會話名 -n 窗口名]

#恢復session:
$ tmux at [-t 會話名]

#列出全部sessions:
$ tmux ls

#關閉session:
$ tmux kill-session -t 會話名

#關閉整個tmux服務器:
$ tmux kill-server

Tmux 經常使用內部命令

所謂內部命令,就是進入Tmux後,並按下前綴鍵後的命令,通常前綴鍵爲Ctrl+b. 雖然ctrl和b離得很遠可是不建議改前綴鍵,由於別的鍵也不見得方便好記不衝突。仍是記憶默認的比較可靠。服務器

系統指令:

前綴 指令 描述
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 & 關閉當前窗口
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 顯示時鐘

個人配置文件

使用

$ git clone git@github.com:zuorn/tmux-config.git
$ cp tmux-config/.tmux.conf ~/.tmux.conf

重啓 tmux restart tmux 或者 在 tmux 窗口中,先按下 Ctrl+b 指令前綴,而後按下系統指令:,進入到命令模式後輸入 source-file ~/.tmux.conf,回車後生效。

配置項

修改指令前綴

可根據本身的喜愛來設置,如若要啓用,取消註釋便可。

#set -g prefix C-f #
#unbind C-f # C-b 即 Ctrl+b 鍵,unbind 意味着解除綁定
#bind C-f send-prefix # 綁定 Ctrl+f 爲新的指令前綴

# 從tmux v1.6版起,支持設置第二個指令前綴
#set-option -g prefix2 ` # 設置一個不經常使用的`鍵做爲指令前綴,按鍵更快些

添加加載配置文件快捷指令 r

bind r source-file ~/.tmux.conf \; display-message "Config reloaded.."

支持鼠標

  • 選取文本
  • 調整面板大小
  • 選中並切換面板
# 老版本:
#setw -g mode-mouse on # 支持鼠標選取文本等
#setw -g mouse-resize-pane on # 支持鼠標拖動調整面板的大小(經過拖動面板間的分割線)
#setw -g mouse-select-pane on # 支持鼠標選中並切換面板
#setw -g mouse-select-window on # 支持鼠標選中並切換窗口(經過點擊狀態欄窗口名稱)

# v2.1及以上的版本
set-option -g mouse on

面板

更改新增面板鍵

    • 垂直新增面板
    • 水平新增面板
unbind '"'
bind - splitw -v -c '#{pane_current_path}' # 垂直方向新增面板,默認進入當前目錄
unbind %
bind =  splitw -h -c '#{pane_current_path}' # 水平方向新增面板,默認進入當前目錄

面板調整大小

綁定Ctrl+hjkl鍵爲面板上下左右調整邊緣的快捷指令

bind -r ^k resizep -U 10 # 綁定Ctrl+k爲往↑調整面板邊緣10個單元格
bind -r ^j resizep -D 10 # 綁定Ctrl+j爲往↓調整面板邊緣10個單元格
bind -r ^h resizep -L 10 # 綁定Ctrl+h爲往←調整面板邊緣10個單元格
bind -r ^l resizep -R 10 # 綁定Ctrl+l爲往→調整面板邊緣10個單元格

複製模式

複製模式更改成 vi 風格

setw -g mode-keys vi # 開啓vi風格後,支持vi的C-d、C-u、hjkl等快捷鍵

複製模式向 vi 靠攏

  • v 開始選擇文本
  • y 複製選中文本
  • p 粘貼文本
bind -t vi-copy v begin-selection # 綁定v鍵爲開始選擇文本
bind -t vi-copy y copy-selection # 綁定y鍵爲複製選中文本
bind p pasteb # 綁定p鍵爲粘貼文本(p鍵默認用於進入上一個窗口,不建議覆蓋)

優化

設置窗口面板起始序號

set -g base-index 1 # 設置窗口的起始下標爲1
set -g pane-base-index 1 # 設置面板的起始下標爲1

自定義狀態欄

set -g status-utf8 on # 狀態欄支持utf8
set -g status-interval 1 # 狀態欄刷新時間
set -g status-justify left # 狀態欄列表左對齊
setw -g monitor-activity on # 非當前窗口有內容更新時在狀態欄通知

set -wg window-status-format " #I #W " # 狀態欄窗口名稱格式
set -wg window-status-current-format " #I:#W#F " # 狀態欄當前窗口名稱格式(#I:序號,#w:窗口名稱,#F:間隔符)
set -wg window-status-separator "" # 狀態欄窗口名稱之間的間隔

Tmux 常見問題

Tmux無論怎麼改配置文件,都不產生變化

這個主要是因爲Tmux的後臺緩存機制形成的。我就犯了個大錯誤:甚至刪了Tmux、重裝Tmux、重啓電腦,都沒達成。
Tmux會有一個叫Tmux-server的東西。只要把它kill,重啓tmux就OK了:

tmux kill-server -a

參考:

相關文章
相關標籤/搜索