如何以程式設計方式存取 zsh 補全?

如何以程式設計方式存取 zsh 補全?

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並獲取上面的輸出(以編程方式,從腳本)。

許多其他現存的問題關於為了bash,但我沒有找到任何解釋如何使用 zsh 實現此目的的內容。

答案1

這可以透過使用來完成zsh 擷取完成。儲存庫的 README.md 檔案提供了幾個範例:

capture.zsh 'vim -'
capture.zsh 'vim --'
capture.zsh 'vim --r'
capture.zsh 'echo *('
capture.zsh 'scp hostname:'

請注意,包本身聲明它是概念證明,因此在執行過程中可能包含錯誤。

相關內容