Featured image of post Tmux-Pencil v0.0.1 發布

Tmux-Pencil v0.0.1 發布

這是我所製作的一個幫助完成初始 .tmux.conf 的 bash script

目錄

inline table of content only on mobile

前言

tmux 是一個很好用的工具,但是預設的樣貌是整條綠色的,如圖片這樣

tmux 預設

其實當中很多訊息會有點難辨識,像是 session number、視窗名稱編號等等,感覺全部擠在一起

而且我不喜歡無腦給工具安裝很多插件

因為用別人的插件雖然快,但是如果有想要自己客製就可能被限制,而且常常會讓一個快速的工具變很肥(像是一大堆插件的 vscode

所以我製作了這個 bash script,以互動的方式去詢問使用者的需求

根據使用者的需求,用幾乎最簡潔的方式把配置寫入 .tmux.conf

tmux-pencil

⋙ tmux-pencil github repo

https://github.com/penyt/tmux-pencil

使用方法

詳細使用方法我放在 github 的 README.md 檔案裡面了,也有中文版本的,就請自己去看

這裡我只會講一下我自己的設計理念和邏輯

理念

我在 tmux-pencil 裡面放入了許多常用的欄位變化、顯示文字、顏色等可調整參數,有: 0. 前置:是否備份、是否要在 conf 裡面加上解釋功能的註解

  1. Prefix 的組合鍵
  2. 0-based 或 1-based
  3. 左邊區塊的文字
  4. 左邊區塊平常的背景
  5. 左邊區塊按下 prefix 時變成的顏色
  6. 狀態列的主要顏色
  7. windows 名稱與標號是否置中
  8. 非工作中 windows 的顯示
  9. 工作中 windows 的顯示
  10. 分割 panes 的快捷鍵
  11. 是否要有 reload 的快捷鍵
  12. 是否使用 Prefix + h/j/k/l 來調整 panes 的大小

1. Prefix 的組合鍵

首先從 Prefix 的組合鍵開始

tmux 的預設 Prefix 組合鍵是 Ctrl + b,這件事一直被詬病

理由也很間單,Ctrl + b 實在是太遠了!!真的很難按啊

所以我最一開始就設計讓使用者先調整 Prefix 的組合鍵

原本的 Ctrl 我稱它為 trigger key,也就是觸發鍵

他可以被換成 CtrlAltShift,但其實我自己也試過,Ctrl 應該是最不容易有衝突的

原本的 b 是 main key,也就是主要的代表鍵,我個人喜歡用 a

但是如果使用者這邊沒選直接按下 enter,那麼我會維持 Ctrl + b 但是還是會把解除和綁定的配置寫入配置檔案

這樣讓使用者以後想改的時候就可以直接到 .tmux.conf 直接改,而不用重跑我的 script

2. 0-based 或 1-based

再來是可以選擇要用 0-based 或 1-based,tmux 預設是 0-based

這裡如果選 1 可以切換成 1-based,但是只會影響 windows 和 panes 而已,session 不會被影響

3. 左邊區塊的文字

接下來是在狀態列的最左邊,預設會有一個 [] 來顯示 session 的名字

這裡我讓使用者可以去自訂,也可以善用 #S 來替代 session 名稱的位置

也就是說,tmux 預設其實是 [#S],但我認爲前面多加一個 session 變成 session[#S] 比較直觀

所以如果這裡空白,我會讓 tmux-pencil 幫你設置成 session[#S]

4. 左邊區塊平常的背景

接下來是這個區塊的顏色

原本這個左邊區塊是沒有區分顏色,和狀態列是同顏色的

但是我覺得可以像 vscode 那像左邊用不同顏色比較好看,所以我預設會讓他變藍色

這塊還可以用來反應有無按下 prefix,也就是下一個部分的東西

5. 左邊區塊按下 prefix 時變成的顏色

我這裡讓左下角那塊原始是藍色,偵測到按下 prefix 之後變為紅色

這樣使用者在操作的時候可以明顯看到現在是否有 prefix 被觸發

不然原本狀態欄都是綠色,按下 prefix 後也不會有反應,我自己常常搞混

就利用了這個區塊來作為 prefix 的區別

6. 狀態列的主要顏色

進入到這步,我就又覺得狀態列顏色是綠色不好看了 XD

所以挑了一個我喜歡的深藍色,作為預設的顏色

當然使用者也可以自己選

7. windows 名稱與標號是否置中

windows 的名稱預設是緊貼在 session 名稱旁邊

我覺得太擁擠,又不好看,所以把它移到中間

當然如果明確說你不要移動的話,輸入 N 就可以維持原樣ㄌ

8. 非工作中 windows 的顯示 & 工作中 windows 的顯示

原本,在當前的 window 中 tmux 是會用 * 來標示,而其他非活躍的則用 -

但就是非常難一眼看出來啊!

而且用顏色來區分的話,比較能吸引視線,一目瞭然

所以我決定,當前視窗用一個點加上原本的 #I:#W(編號:名稱),並且用淺藍色

閑置視窗則是單純的 #I:#W(編號:名稱),就不要用後面有一個 -

9. 分割 panes 的快捷鍵

分割 panes 原本是用 prefix + %prefix + ",很不直觀!

所以和其他人改的方式都差不多,分爲左右就用 prefix + |

分爲上下就用 prefix + -

非常直觀,而且用形狀去記就好,根本不用額外記憶

10. 是否要有 reload 的快捷鍵

這個沒什麼好解釋的,就是快!

而且在剛開始設定的時候,常常改 .tmux.conf

所以這時候設定一個 reload 的快捷鍵就會很方便

11. 是否使用 Prefix + h/j/k/l 來調整 panes 的大小

tmux 預設情況下用 prefix + 上/下/左/右,可以在不同 panes 之間跳躍

那如果要調整大小呢?

這邊我參考了別人設置的方式,用 vim 的上下左右來與 prefix 組合

變成 prefix + h/j/k/l 可以用來微幅的調整所在 pane 的邊

結語

其實這個 script 也沒有什麼特別不一樣的地方

就是把設定 .tmux.conf 的步驟變成互動式,由 script 帶領一步一步寫好

而如果在前置的部分有選擇要加上解釋功能的註解,那麼在每寫入一行設定之前,tmux-pencil 就會先寫下這個設定的功能和作用

以後要自己改 .tmux.conf 的時候,就不用再去找當初這個用 script 寫進去的設定是什麼了

我的這個 tmux-pencil 小工具就介紹到這裡,如果有覺得他好用的話,可以去 github 幫我按個星星 ⭐️ ~~ 會是我的動力!

by Pen

到這頁的屁股了:3
📬Email:pen@penyt.com

使用 Hugo 建立
主題 StackJimmy 設計