zsh 有一個補全系統,透過按 Tab 啟動:
llama@llama:~$ git st<Tab>
Completing main porcelain command
stash -- stash away changes to dirty working directory
status -- show working-tree status
Completing plumbing internal helper command
stripspace -- filter out empty lines
我所能弄清楚的是,這來自腳本/usr/share/zsh/functions/Completion/Unix/_git
,其中_git
調用了完成命令。
假設我知道完成函數的名稱(例如_git
),如果我輸入某個字串並按下製表符,我如何獲得會發生什麼的輸出?本質上,我正在嘗試接受前任的輸入。git st
並獲取上面的輸出(以編程方式,從腳本)。
答案1
這可以透過使用來完成zsh 擷取完成。儲存庫的 README.md 檔案提供了幾個範例:
capture.zsh 'vim -'
capture.zsh 'vim --'
capture.zsh 'vim --r'
capture.zsh 'echo *('
capture.zsh 'scp hostname:'
請注意,包本身聲明它是概念證明,因此在執行過程中可能包含錯誤。