2022年3月4日 星期五

Linux | 使用Tmux提升工作效率

Tmux最大好處就是可以開啟多視窗並快速切換或分割視窗,讓使用者可以更效率的去工作,這邊就簡單紀錄如何安裝Tmux與簡單常用到的指令。


步驟一:安裝oh my tmux

這邊直接去Git下載Oh my tmux!,安裝步驟如下

$ cd ~
$ git clone https://github.com/gpakosz/.tmux.git
$ ln -s -f .tmux/.tmux.conf
$ cp .tmux/.tmux.conf.local .


步驟二:安裝Plugin


新增兩個Plugin,編輯.tmux.conf.local,加入下方內容(應該會有兩個預設的plugin在裡面,直接加入到下方即可)
  • tmux-resurrect可以保存視窗
  • tmux-continuum這個試配合resurrect使用,在下次使用tmux的時候,會自動載入上次建立好的視窗內容
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on' #下次進入tmux自動載入上次內容
set -g @continuum-save-interval '5' #5分鐘存檔一次內容
set -g @resurrect-capture-pane-contents 'on' #自動擷取Panel內容
set -g @resurrect-save-shell-history 'on' #自動儲存shell歷史
set -g @resurrect-processes 'ssh' #自動連接ssh


步驟三:使用Tmux並建立視窗與命名

前兩個步驟安裝完後,直接輸入tmux就可以開始使用,使用tmux功能都是從快捷鍵開始,安裝好後oh my tmux快捷鍵除了原來的Ctrl + b外,還可以使用Ctrl + a,以下就是建立視窗會用到的方式

  • 建立Panel - 快捷鍵+c
  • 切換視窗 - 快捷鍵+w
  • 修改Window名稱,快捷鍵+:,輸入reanme-window name
如下圖,可以依照自己習慣命名,快速切換視窗不用一個一個開terminal去連線



步驟四:分割視窗

Tmux可以在一個window分割多個Panel,請看下面介紹方式

  • 水平分割視窗 - 快捷鍵+ -
  • 垂直分割視窗 - 快捷鍵+ _
  • 切換視窗 - 快捷鍵加方向鍵
  • 修改視窗大小與切換視窗 - 快捷鍵+ m,這是on my tmux功能,可以用滑鼠去調整視窗大小與切換視窗,有興趣可以去github上有展示的gif可以看。
  • 面板最大化 - 快捷鍵+ z,分割視窗後如果想要先看某一個視窗,可以先把該面板最大化,恢復原來分割畫面,就再輸入一次快捷鍵+ z。
  • 刪除Panel - 快捷鍵 + x,如果分割太多或想重新分割就可以用到。
  • 刪除Window - 快捷鍵 + &
  • 排序視窗順序 - 快捷鍵+:,輸入choose-tree -s -O name
如下圖你可以打造你想要面板,我這邊是切了三個視窗,可以同時看不同的資訊。



步驟五:消除resurrect所造成的終端輸出history紀錄


如下圖,resurrect會造成終端輸出很多log,查了一下有幾個解決方法,我使用這個Blog使用的方法,其他的也可以參考github上所討論的方法。


Q: 重開機後,之前建立的Panel都消失了怎麼辦

重開機後別急著下tmux或是attach之類的命令,先下# tmux new-window,然後再下# tmux attach,連進去後輸入快捷鍵+ctrl r去恢復之前的Panel,如果恢復不了那就用下面的方法。

# cd .tmux/resurrect #這目錄會有之前存下Panel的檔案,找出你之前存好的Panel# rm last #resurrect會讀取這個檔案作為還原檔案# ln -s tmux_resurrect_20220530T154511.txt last #使用再前面找到保存好的Panel檔案再重新link
# tmux new-window# tmux attach快捷鍵 -> Ctrl+R 即可恢復之前的Panel


Menu Reorder

#!/bin/sh

# Shift current ids far out
tmux list-windows | awk -F: '{system("tmux move-window -s "$1" -t 100"$1)}'

# sort and move windows
tmux list-windows | sort -sk2 | awk -F: '{system("tmux move-window -s "$1" -t "NR)}'




參考資料:

Tmux使用手册 | louis blog (louiszhai.github.io)

https://github.com/guevara/read-it-later/issues/8117


沒有留言: