開發環境
Tmux
最近使用 Neovim
覺得要重新開新的視窗 Terminal(command + n)很麻煩,上網找到了許多人推薦的 Tmux,在此筆記我昨晚的成果。
Tmux 是 terminal multiplexer,藉由 Tmux 提供的多重視窗功能,可以讓我們在一個 terminal 分割不同的頁面,達到一個頁面多工的效果(而不是需要手動開多個 terminal 分頁)。
Tmux 的多重視窗由四個元素組成:
(server -> session -> window -> pane)
server 用來管理 session ,只要 server 沒有被關閉,session 就不會遺失。
要使用 Tmux 的功能就需要在 terminal 輸入指令 tmux
啟動 Tmux,每次啟動都會新增一個 session。每一個 session 可以擁有數個 window,且每個 session 彼此為獨立地存在,不會互相影響。
以一個 project / directory 為 session。
session 中保存的項目,概念類似瀏覽器的分頁。
分割視窗,一個 window 可以有數個分割視窗。
Tmux 中很多指令都是靠著 prefix (預設為 control + b)+ 其他指令達成。
一開始按了很久都無法成功執行指令,後來上網找到答案:要先執行完 prefix 再按其他指令,不要一起按。
在家目錄(~/)
新增設定檔 .tmux.conf
,便可以設定 Tmux。
~/.tmux.conf
:
使用 tpm Tmux 的套件管理工具。
先 clone 到 local
之後再 ~/.tmux.conf
新增:
再執行指令讓 Tmux 吃到設定,或者用 prefix r
:
就完成套件管理的安裝了,之後如果想要安裝其他套件,直接在 ~/.tmux.conf
新增 set -g @plugin 'tmux-plugins/tmux-sensible'
(假設要安裝 tmux-sensible
),再讓 Tmux 吃到設定後執行 prefix + I
安裝套件即可。
在 ~/.tmux.conf
把該套件註解/刪除後再執行指令 ~/.tmux/plugins/tpm/bin/clean_plugins
後 tmux kill-server
重新開啟 tmux
即可。
儲存 tmux 的工作視窗(比方來說 session),讓我們 kill-server 後還可以叫回該工作視窗。
預設儲存 prefix + C-s
預設叫回 prefix + C-r
在 ~/.tmux.conf
寫入套件設定
讓 tmux-resurrect 達到自動保存的功能。
套件的 FAQ 中有提到保存檔只會保存 30 天。
可以複製 tmux 上的東西到系統的剪貼簿上。
預設進入 copy mode prefix [
,對選取的文字按 y
即可複製。
可以在 ~/.tmux.conf
寫入設定,讓 copy mode 的移動跟 vim 相同。
如果有數個搜尋結果,可用 n
/ N
前後移動。
更方便地在 copy mode 搜尋要複製的文字。
雖然在 copy mode 可以用 vim 的方式搜尋文字 prefix [ + ? 搜尋文字
,但是有些特別的情況還是用 copycat
提供的方法比較快速。
prefix / 搜尋文字(支援 reg)
prefix + C - f
搜尋檔案路徑prefix + C - u
搜尋 Url再搭配 tmux-yank 提供的 y
複製,就可以不用進入 copy mode 複製文字。
如果有數個搜尋結果,可用 n
/ N
前後移動。
tat
直接以 directory 名稱命名 session前面提及為了方便管理,可以用一個 project / directory 分類 session,但是預設建立 session 的話都會以當前 session index 為 session 的名稱,看起來很難管理,雖然可以手動輸入指令 tmux new -s <session_name>
建立有名稱的 session,但每次都輸入這個還真的有點麻煩。幸好網路大神有發明一個招式,讓我們可以只輸入 tat
就會自動新增一個以當前 directory 名稱為名字的 session。
在 ~/.bashrc
或者 ~/.zshrc
或者其他你使用的 shell 新增以下程式碼:
之後就可以順利地輸入 tat
得到有名字的 session 了。
prefix + d
將 Tmux 壓到背景(detach)
tmux at
把該被壓到背景的 Tmux session 叫回來
prefix + 方向鍵
在 pane 之間移動
control + d
刪除目前的 pane / window
prefix + ,
重新命名目前的 window
prefix + $
重新命名目前的 session
tmux kill-server
直接把目前 Tmux 砍掉(如果個人化設定救不會來的話,除了刪掉改動的設定,還要執行這行)
tmux kill-session -a
除了目前的 session 外其他皆刪除
tmux list-session
/ tmux ls
查看目前有多少 tmux sessions
tmux kill-session -t <targetSession>
可以刪除特定的 session(可以用 index 或者 sessionName)
.tmux.conf