Zshでgitのエイリアスをいくつか作成しました。たとえば、gch = git checkout、grb = git rebase --committer-date-is-author-date、およびgitコマンド用のより複雑で便利なzsh関数です。しかし、どうすればこれらのエイリアスにzsh gitオートコンプリートの使用を許可できますか?
git
完了の自動ロードされた関数定義を含むファイルを開くと、次のようになります。
私のubuntuシステムでは、次のようになります。
/usr/share/zsh/functions/Completion/Unix/_git
ファイルの先頭に#compdef
宣言が表示されます
#compdef git git-cvsserver git-receive-pack git-upload-archive git-upload-pack git-Shell gitk tig
エイリアスを#compdef
定義に追加してみてください。
#compdef git git-cvsserver git-receive-pack [...] tig gch grb
^^^ ^^^
次に、新しいシェルを起動して、その新しいディレクティブをロードします。
次に、完了を呼び出してみてください。
/usr/share/zsh/functions/Completion/Unix/_git
とは何ですか?#compdef
ディレクティブで定義されたすべてのコマンド(この場合はgit
コマンドファミリー)の完了動作を定義する自動ロードされた「関数」を含むファイルで、fpath
であり、完了システムが初期化されるときにcompinitによって自動ロードされます。
#compdef
とは何ですか?man zshcompsys
から
#compdef name ... [-{p | P}パターン... [-N name ...]]
ファイルは自動ロード可能になり、名前を完了するときにファイルで定義された関数が呼び出されます。名前はそれぞれ、引数を完了するコマンドの名前か、のいくつかの特別なコンテキストの1つです。以下に説明するform-context-。
私は非常に似たようなことをしました。 oh-my-zshを使用していますか?その場合は、.zshrc
ファイルでzsh-completionsプラグインが有効になっていることを確認してください。 zsh-autosuggestionsプラグインもお勧めします。
それが済んだら、.zshrc
ファイルに以下を追加する必要があります(まだ存在しない場合)
fpath=(~/.zsh/completions $fpath)
autoload -U compinit && compinit