Zsh:手動ロード完了機能

Zsh:手動ロード完了機能

シェルの起動時に完了機能をロードする場合は、狂ったように同じフォルダで作業するためにシェルを作成します。

フォルダーを含むリポジトリーをターゲットとする複数の完成関数がある場合は、そのリポジトリーに存在する場合は.gitこれらの関数がロードされます。

問題は、新しいシェルが作成されたときにすべての完了が開始されると、シェルプロンプトがやや遅く表示されることです。

それでは、ロード/source完了機能を手動でどのようにトリガーしますか?すでにリポジトリにあることを知っているにもかかわらず、.git完了機能を使用する前に手動でロードしたいと思います。遅いシェルのビルドコストは完了自体よりも高くなります。

答え1

起動時に完了関数をロードするのではなく、自動的にロードされることを宣言してください。これにより、各関数が最初に使用されたときにロードされます。

これを行う一般的な方法は、各関数のコードを$fpath関数に与える名前で呼び出される.fileに入れることです。ファイルの最初の行に追加#compdef商標

したがって、次の内容がある場合.zshrc

autoload -Uz compinit
compinit -u
_foo () {
  code goes here
}
compdef _foo foo

次に、これを次の項目に入れます.zshrc

fpath=(~/.zsh/functions $fpath)
autoload -Uz compinit
compinit -u

~/.zsh/functions/_foo以下を含むファイルを作成します。

#compdef foo
code goes here

関連情報