迷人的 shell 腳本工具。在腳本和別名中利用 Bubbles 和 Lip Gloss 的強大功能,無需編寫任何 Go 程式碼!
上面的範例是從單一 shell 腳本(原始碼)運行的。
Gum 提供高度可配置、即用型實用程序,幫助您只需幾行程式碼即可編寫有用的 shell 腳本和點文件別名。讓我們建立一個簡單的腳本來幫助您為點文件編寫常規提交。
詢問帶有gum select的提交類型:
gum choose " fix " " feat " " docs " " style " " refactor " " test " " chore " " revert "
筆記
該命令本身將列印到標準輸出,這並不是很有用。要稍後使用該命令,您可以將標準輸出儲存到$VARIABLE
或file.txt
。
提示這些變更的範圍:
gum input --placeholder " scope "
提示更改摘要和描述:
gum input --value " $TYPE$SCOPE : " --placeholder " Summary of this change "
gum write --placeholder " Details of this change "
提交前確認:
gum confirm " Commit changes? " && git commit -m " $SUMMARY " -m " $DESCRIPTION "
查看將這些命令組合到單一腳本中的完整範例。
使用套件管理器:
# macOS or Linux
brew install gum
# Arch Linux (btw)
pacman -S gum
# Nix
nix-env -iA nixpkgs.gum
# Flox
flox install gum
# Windows (via WinGet or Scoop)
winget install charmbracelet.gum
scoop install charm-gum
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo " deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * * " | sudo tee /etc/apt/sources.list.d/charm.list
sudo apt update && sudo apt install gum
echo ' [charm]
name=Charm
baseurl=https://repo.charm.sh/yum/
enabled=1
gpgcheck=1
gpgkey=https://repo.charm.sh/yum/gpg.key ' | sudo tee /etc/yum.repos.d/charm.repo
sudo rpm --import https://repo.charm.sh/yum/gpg.key
# yum
sudo yum install gum
# zypper
sudo zypper refresh
sudo zypper install gum
或下載:
或直接使用go
安裝它:
go install github.com/charmbracelet/gum@latest
choose
:從選項清單中選擇一個選項confirm
:要求使用者確認操作file
:從資料夾中選擇一個文件filter
:從清單中過濾項目format
:使用模板格式化字串input
:提示輸入一些內容join
:垂直或水平連接文本pager
:滾動瀏覽文件spin
:運行指令時顯示微調器style
:對文字套用顏色、邊框、間距table
: 渲染資料表write
:提示輸入長格式文本log
:記錄要輸出的訊息您可以使用--flags
和$ENVIRONMENT_VARIABLES
自訂gum
選項和樣式。有關每個命令的自訂和配置選項的完整視圖,請參閱gum <command> --help
。
使用--flags
自訂:
gum input --cursor.foreground " #FF0 "
--prompt.foreground " #0FF "
--placeholder " What's up? "
--prompt " * "
--width 80
--value " Not much, hby? "
使用ENVIRONMENT_VARIABLES
進行自訂:
export GUM_INPUT_CURSOR_FOREGROUND= " #FF0 "
export GUM_INPUT_PROMPT_FOREGROUND= " #0FF "
export GUM_INPUT_PLACEHOLDER= " What's up? "
export GUM_INPUT_PROMPT= " * "
export GUM_INPUT_WIDTH=80
# --flags can override values set with environment
gum input
使用簡單的命令提示輸入。
gum input > answer.txt
gum input --password > password.txt
提示輸入一些多行文字( ctrl+d
完成文字輸入)。
gum write > story.txt
使用模糊匹配過濾值列表:
echo Strawberry >> flavors.txt
echo Banana >> flavors.txt
echo Cherry >> flavors.txt
gum filter < flavors.txt > selection.txt
使用--limit
標誌或--no-limit
標誌選擇多個選項。使用tab
或ctrl+space
進行選擇, enter
確認。
cat flavors.txt | gum filter --limit 2
cat flavors.txt | gum filter --no-limit
從選項清單中選擇一個選項。
echo " Pick a card, any card... "
CARD= $( gum choose --height 15 {{A,K,Q,J},{10..2}} " " {♠,♥,♣,♦} )
echo " Was your card the $CARD ? "
您也可以使用--limit
或--no-limit
標誌選擇多個項目,這決定了可以選擇的最大項目數。
cat songs.txt | gum choose --limit 5
cat foods.txt | gum choose --no-limit --header " Grocery Shopping "
確認是否執行操作。根據選擇,以代碼0
(肯定)或1
(否定)退出。
gum confirm && rm file.txt || echo " File not removed "
提示使用者從文件樹中選擇一個文件。
EDITOR $( gum file $HOME )
捲動瀏覽帶有行號和完全可自訂視口的長文件。
gum pager < README.md
運行腳本或命令時顯示微調器。給定命令退出後,旋轉器將自動停止。
若要查看或透過管道傳輸指令的輸出,請使用--show-output
標誌。
gum spin --spinner dot --title " Buying Bubble Gum... " -- sleep 5
可用的旋轉器類型包括: line
、 dot
、 minidot
、 jump
、 pulse
、 points
、 globe
、 moon
、 monkey
、 meter
、 hamburger
。
從一些表格資料中選擇一行。
gum table < flavors.csv | cut -d ' , ' -f 1
使用一個命令可以漂亮地列印具有任何佈局的任何字串。
gum style
--foreground 212 --border-foreground 212 --border double
--align center --width 50 --margin " 1 2 " --padding " 2 4 "
' Bubble Gum (1¢) ' ' So sweet and so fresh! '
垂直或水平組合文字。將此命令與gum style
一起使用來建立佈局和漂亮的輸出。
提示:在join
命令中將其用作參數時,請始終將gum style
的輸出括在引號中以保留換行符 ( n
)。
I= $( gum style --padding " 1 5 " --border double --border-foreground 212 " I " )
LOVE= $( gum style --padding " 1 4 " --border double --border-foreground 57 " LOVE " )
BUBBLE= $( gum style --padding " 1 8 " --border double --border-foreground 255 " Bubble " )
GUM= $( gum style --padding " 1 5 " --border double --border-foreground 240 " Gum " )
I_LOVE= $( gum join " $I " " $LOVE " )
BUBBLE_GUM= $( gum join " $BUBBLE " " $GUM " )
gum join --align center --vertical " $I_LOVE " " $BUBBLE_GUM "
format
處理並格式化文字主體。 gum format
可以解析 markdown、模板字串和命名表情符號。
# Format some markdown
gum format -- " # Gum Formats " " - Markdown " " - Code " " - Template " " - Emoji "
echo " # Gum Formatsn- Markdownn- Coden- Templaten- Emoji " | gum format
# Syntax highlight some code
cat main.go | gum format -t code
# Render text any way you want with templates
echo ' {{ Bold "Tasty" }} {{ Italic "Bubble" }} {{ Color "99" "0" " Gum " }} '
| gum format -t template
# Display your favorite emojis!
echo ' I :heart: Bubble Gum :candy: ' | gum format -t emoji
有關模板助手的更多信息,請參閱 Termenv 文件。有關命名表情符號的完整列表,請參閱 GitHub API。
log
使用charmbracelet/log
庫使用不同層級和樣式將訊息記錄到終端。
# Log some debug information.
gum log --structured --level debug " Creating file... " name file.txt
# DEBUG Unable to create file. name=temp.txt
# Log some error.
gum log --structured --level error " Unable to create file. " name file.txt
# ERROR Unable to create file. name=temp.txt
# Include a timestamp.
gum log --time rfc822 --level error " Unable to create file. "
請參閱 Go time
包以取得可接受的--time
格式。
如需更多用法,請參閱charmbracelet/log
。
如何在日常工作流程中使用gum
:
如需更多實際用例,請參閱範例目錄。
git commit -m " $( gum input --width 50 --placeholder " Summary of changes " ) "
-m " $( gum write --width 80 --placeholder " Details of changes " ) "
$EDITOR
中開啟文件 $EDITOR $( gum filter )
tmux
會話SESSION= $( tmux list-sessions -F # S | gum filter --placeholder " Pick session... " )
tmux switch-client -t $SESSION || tmux attach -t $SESSION
git
歷史記錄中選擇提交哈希git log --oneline | gum filter | cut -d ' ' -f1 # | copy
skate
密碼選擇器。 skate list -k | gum filter | xargs skate get
brew list | gum choose --no-limit | xargs brew uninstall
git
分支git branch | cut -c 3- | gum choose --no-limit | xargs git branch -D
gh
檢查 GitHub 拉取請求gh pr list | cut -f1,2 | gum choose | cut -f1 | xargs gh pr checkout
gum filter < $HISTFILE --height 20
sudo
替換 alias please= " gum input --password | sudo -nS "
我們很想聽聽您對此項目的想法。請隨時給我們留言!
麻省理工學院
魅力的一部分。
Charm熱愛開源 • Charm熱愛開源