シェルの起動時に完了機能をロードする場合は、狂ったように同じフォルダで作業するためにシェルを作成します。
フォルダーを含むリポジトリーをターゲットとする複数の完成関数がある場合は、そのリポジトリーに存在する場合は.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