zsh:Gitコマンド補完機能を使用したタブ補完

zsh:Gitコマンド補完機能を使用したタブ補完

zsh では、次のコマンドを使用します。ローカルおよびリモートポイント削除機能次のコマンドを使用します。

gpDo () {
    git branch -d "$1" && git push --delete origin "$1"
}

現在、Gitブランチのオートコンプリートは機能しません。フルポイント名を手動で入力する必要があります。このタイプの機能を使用するには、タブの完成をどうすればよいですか?

答え1

私はあなたが使用していると仮定します「新しい」完成システムによってアクティブになりましたcompinit。 oh-my-zshを使用している場合はそうです。

gitブランチ名を使用するようにzshに指示する必要がありますgpDo。 Gitはすでにブランチ名を完成させる方法を提供しています。 zsh 5.0.7以降、これは機能ですが安定__git_branch_namesしたインターフェースではないため、他のバージョンでは変更される可能性があります。この機能を使用するには、次の行を次の行に入力します.zshrc

compdef __git_branch_names gpDo

このステートメントを使用すると、コマンドラインgpDoでタスクを1回以上完了した後にのみ完了が適用されますgit。これは zsh の機能自動ロードの問題によるものです。または_git 2>/dev/nullあなたのもので実行してください.zshrc。完了関数が無効なコンテキストで呼び出されるため、エラーが発生しますが、エラーは無害であり、ロードおよび関連関数(__git_branch_namesを含む)の副作用は_gitそのまま残ります。

または、独自のgit分岐完了機能を定義してください。迅速で汚い方法:

_JJD_git_branch_names () {
  compadd "${(@)${(f)$(git branch -a)}#??}"
}

関連情報