[Env] tmux 一些設定

前言

最近剛好再弄一些集成式環境設定
從大一開始, 一直以來都覺得自己 tmux 用法總是有些雜亂和不夠完整
很久沒寫文章了, 乾脆把 tmux 抓出來複習一下順便做個紀錄吧!

什麼是 tmux ?

通常你會點進來, 大概都是對 tmux 略知一二了..XD

tmux — Terminal Multiplexer

說來也很簡單, 跟字面上的意思相符

一個實用的工具方便你對 terminal 進行視窗的分割、切換等相關多工上的操作

Outline

  1. Install
  2. Basic Usage
  3. user prefix - .tmux.conf setting

Install

這應該不用多談了吧, 看你的作業系統、環境、套件管理程式決定安裝方法

  • apt-get install tmux
  • pkg install tmux

Basic Usage

Create tmux session

直接在 console 輸入 tmux 就可以囉, 這時候 tmux 就會創立一個 tmux session, 通常為 session 0
然後在裏面你就可以進行各式各樣 tmux 實用的功能了

Session 是甚麼呢? 我們後面在 Multiple Session Control 時會再提

Prefix key

tmux 在進行相關操作時, 是透過鍵盤配合指令完成的
而其中你要進行有關 tmux 的相關操作時, 必須先下一個 prefix 鍵
這樣才會讓 tmux 知道, 你要針對 tmux 做操作了

預設的 prefix 鍵是 ctrl+b, 如果覺得 ctrl+b 的位置太遠
你也可以透過後面我會提的 .tmux.conf 去設定自己習慣的 prefix key

常常有人將 prefix 設成 ctrl+a

simple command

tmux 可以透過方便簡單的 command 來讓你維持多個工作視窗或切割等功能

像是, 切割出如下圖般3個分割視窗, 方便你一邊進行 Programing, 一邊進行觀察執行狀況

那接下來我們就直接列出基本簡單常用的功能按鍵鈕來學習吧!

Ctrl+b 後按下的鍵 English Meaning 功能和效果
c create 新建分頁
x close(? 關閉目前分頁
w choose 交互模式選擇分頁
n next 跳到下一個分頁
p previous 跳回前一個分頁
<number> 調到指定編號數字的分頁
, aliase(? 設定分頁別名
d detached (純)離開該 tmux session 回到原始 shell
: command tmux command 模式, 使用後可以透過指令進行相關 tmux 操作

特別提一下 :, 使用後就有點像是 tmux <command>, 可以直接在 tmux 裡面下後面 <command> 的部分

Multiple Session Control

前面有提到 tmux 可以建立多個分頁 ( windows ), 並也簡單的教學了如何使用指令切換視窗

但當今天你可能需要並非再同一台 Server 上, 抑或是整個工作環境、階段的切換

那這時候建立多個 session, 切割出工作環境就可以幫上忙了

例如: Session 0 用來作為研發, Session 1 用來作為測試, Session 2 作為正式上線環境
每個 Session 都連到自己所屬的 Server 並創建分頁來進行多工操作

以下就列出如何操作並切換各個 Session~

Command 功能和效果 備註
tmux ls 顯示目前已經建立的 Session
tmux attach -t 進入某個已經建立的 Session 1. attach 可以簡寫成 att a 都可

2. 想直接進入之前最後的 Session
可以直接下 tmux attach

tmux new -s 創建自訂義名稱的 session
tmux rename -t 重命名
ctrl+b + s 交互模式選擇 session

tmux.conf

好啦, 到這裡你已經學會基本上 23 成 tmux 的功夫了, 也別小看這 23 成, 用的順手其實也勘用了(汗

那接下來要教甚麼呢, 算是一些比較額外的, 方便你去自訂義你的 tmux, 像是:

  • 設個順手的按鍵
  • 調整 tmux 視窗一些 information 外觀位置
  • 顯示更多你想要的資訊
  • 更多更懶人的快捷方法...

要達成這些, 你就可以透過撰寫你自己專屬的 tmux 設定檔, 來達成

Getting Start

要設定自己定義的 tmux 設定檔, 可以透過撰寫 ~/.tmux.conf, 自己家目錄底下的 .tmux.conf 達成

這邊就列出幾個我覺得比較實用的功能, 實際上還能達成更多自定義的調教, 可能就要各為自己去體會和嘗試了XD

# 修改 prefix Ctrl+B 為 Ctrl+A
unbind C-b
set -g prefix ^A
bind b send-prefix

# 透過 bind 和 unbind, 你就可以設定符合自己習慣的按鍵, 而不是照著 tmux 原本的方式喔~ 例如..
bind v split-window -h
bind s split-window -v    
    
# 設定 tmux 相關 information bar..
set -g status-left "..." 
set -g status-right "..."

更多的也可以參考我目前在 github 上的 dotfile tmux repo

雖然目前我也還沒寫很多就是了XD, 有機會在修修改改~

那大概這樣XD