プログラムでzsh補完にアクセスするにはどうすればよいですか?


8

zshには補完システムがあり、タブを押すとアクティブになります。

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)がわかっているとすると、特定の文字列を入力してタブを押した場合にどうなるかを出力するにはどうすればよいでしょうか。基本的に、私はexの入力を取得しようとしています。git st上記の出力を取得します(プログラムから、スクリプトから)。

これに関して bash に関する他の多く既存の質問がありますが、zshでこれを達成する方法を説明するものは何も見つかりませんでした。


回答:


2

これは、zsh-capture-completionを使用して行うことができます。リポジトリのREADME.mdファイルには、いくつかの例があります。

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

パッケージ自体は、それが概念実証であることを示しているため、パッケージの実行中にエラーが含まれる可能性があることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.