web-dev-qa-db-ja.com

エイリアスにzshオートコンプリートを使用する

Zshでgitのエイリアスをいくつか作成しました。たとえば、gch = git checkout、grb = git rebase --committer-date-is-author-date、およびgitコマンド用のより複雑で便利なzsh関数です。しかし、どうすればこれらのエイリアスにzsh gitオートコンプリートの使用を許可できますか?

3

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-。

1
the_velour_fog

私は非常に似たようなことをしました。 oh-my-zshを使用していますか?その場合は、.zshrcファイルでzsh-completionsプラグインが有効になっていることを確認してください。 zsh-autosuggestionsプラグインもお勧めします。

それが済んだら、.zshrcファイルに以下を追加する必要があります(まだ存在しない場合)

fpath=(~/.zsh/completions $fpath)
autoload -U compinit && compinit
0
Brian Tully