Prompt Title: Zsh 自動補全功能

Created 1 year ago
Votes 0
Views 165 times
IT
0
Human: 我在 linux 下寫了某個 shell scrip,我使用 ``` ARGS=`getopt -o p --long prod,fe,skip-build,migration,project:,corp: -- "$@"` ``` 來限制我的參數 當我在 ubuntu 下透過 /shell/zsh 作為 shell 時,我會在 cli 輸入 ``` ./deploy.sh --project crm --corp skymirror ``` 但我不想要每次都打完 skymirror 這個單字,請問我該如何設計才能在打完 ``` ./deploy.sh --project crm --corp sk ``` 時按下 TAB,便自動完成 ``` ./deploy.sh --project crm --corp skymirror ```
ChatGPT:

您可以在 shell 設定中啟用自動補全功能來解決這個問題。這樣,當您輸入部分內容時,按下 TAB 鍵時,shell 會自動為您完成命令或參數。

對於 Zsh,您可以添加以下行到您的 ~/.zshrc 檔案中啟用自動補全功能:

bash
autoload -U compinit compinit

完成後,重新載入 shell 設定:

bash
source ~/.zshrc

接著,您可以使用 zsh 的自動補全功能來為 deploy.sh 的 --corp 選項設定預設值。在您打出命令時,只需輸入部分內容,然後按下 TAB 鍵即可自動完成。以下是一個可能的解決方案:

bash
# 在 deploy.sh 中添加以下代碼 _deploy() { local cur cur=${COMP_WORDS[COMP_CWORD]} if [[ "$cur" == "sk" ]]; then COMPREPLY=( $(compgen -W "skymirror" -- $cur) ) fi } complete -F _deploy deploy.sh

這段代碼將為 deploy.sh 添加一個自動補全函數,當您輸入 --corp sk 並按下 TAB 時,它將自動補全為 --corp skymirror。

完成後,重新載入 shell 設定:

bash
source ~/.zshrc

現在,當您輸入以下命令時:

css
./deploy.sh --project crm --corp sk<TAB>

它應該會自動完成為:

css
./deploy.sh --project crm --corp skymirror

請注意,這個解決方案假設您只有一個可能的預設值,即 skymirror。如果您有多個可能的值,則需要修改 _deploy 函數來處理它們。

avatar
raiven.kao
Shared 1 prompt
Created 1 year ago

Leave a Comment

Related Tag Prompts

163
0
Linux Legend
1 year ago 2023-01-22 12:08:21 AIPRM
0
0
Assistance Requested.
1 year ago 2023-03-19 10:57:39 Senyok
0
0
Linux Terminal Simulation.
1 year ago 2023-04-30 08:13:38 Tura
0
0
Linux Commands
1 year ago 2023-05-08 07:40:19 1
0
0
LINUXKOTAK
6 months ago 2023-11-03 23:08:49 NURDA
0
0
Postfix configuration
4 months ago 2024-01-03 23:16:16 Woozalia