M1 macOS (11.0.1)で検証しました.
【zsh】絶対やるべき!ターミナルでgitのブランチ名を表示&補完【git-prompt / git-completion】
https://qiita.com/mikan3rd/items/d41a8ca26523f950ea9d
ありがとうございます. git-prompt 便利ですよね.
でも私の macOS 環境(Macports だけ入っているくらいのほぼ素の環境)ではなぜか劇遅でした(ついでに言うと Linux でも)
llvm-project
みたいにでかい git repo だと, ディレクトリ移動するごとに数秒待たされて仕事になりません.
git-prompt は特に Windows で劇遅であることが知られています.
Windows GitBash のプロンプト表示が遅いのをなんとかしたかった
https://neos21.hatenablog.com/entry/2018/12/31/080000
git ls あたりが遅いのが原因のようです. 原因解明して対処するのも面倒です.
(とりあえずの対処は上記 site のように branch 名だけ表示するように __git_ps1 あたりを自前で作る)
zsh 版 git-prompt
いくつか同名や似たプロジェクトがあるようですが, 今回は woefe/git-prompt.zsh
を使いました.
git-completion と連携できます.
miniforge(miniconda)と連携したかったので .zshrc
は以下のような感じになりました.
fpath=(~/.zsh $fpath)
zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.bash
autoload -Uz compinit && compinit
source ~/.zsh/git-prompt.zsh/git-prompt.zsh
source ~/.zsh/git-prompt.zsh/examples/default.zsh
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/syoyo/miniforge3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/Users/syoyo/miniforge3/etc/profile.d/conda.sh" ]; then
. "/Users/syoyo/miniforge3/etc/profile.d/conda.sh"
else
export PATH="/Users/syoyo/miniforge3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
こんな感じで表示されて, llvm-project のようなでかい git repo でも爆速にサクサク動くのを確認しました
(実際は遅延評価 + cache してレスポンス上げているっぽいようです)