Prezto から Starship に乗り換えた話
正確には Prezto と Starship を共存させた話です。 シェルの環境構築は一度済ませてしまうと忘れがちなので、乗り換えたタイミングで手順を残しておきます。
元々は以下のような環境でしたが、描画が少し遅いのが気になっていました。(Enter を長押しすると顕著)
Rust 製の Starship というツールが良いと聞いたので試しに入れてみましたが、結論から言うと速くて便利で最高の体験を得られました。
macOS と Ubuntu を使っているのでそれぞれにインストールしました。
README には載っていませんでしたが、Ubuntu でも snap 経由で入れられるので楽です。
homebrew
$ brew install starship
snap
$ sudo snap install starship
Starship の設定ファイルは toml で記述します。デフォルトのパスは ~/.config/starship.toml
ですが個人的に扱いづらかったので変更しました。
.zshrc
最初は Starship だけ設定していましたが、zsh-syntax-highlighting や zsh-completion に相当する機能はなかったので結局 Prezto も併用しています。
# Source Prezto. if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" fi export STARSHIP_CONFIG=~/.starship.toml eval "$(starship init zsh)"
.zpreztorc
Prezto の設定は元々ほぼデフォルトのまま(prompt のテーマを powerlevel9k にしていたくらい)でしたが、この際に見直して読み込む module を最低限に絞りました。
zstyle ':prezto:load' pmodule \ 'utility' \ 'completion' \ 'syntax-highlighting' \ # 'environment' \ # 'terminal' \ # 'history' \ # 'directory' \ # 'spectrum' \ # 'prompt' \ # 'autosuggestions'
.starship.toml
prompt_order
で表示順を変えたり、改行を消したり、Kubernets の context を表示するようにしたりしています。(大体の項目はデフォルトで有効ですが Kubernetes のように一部無効のものもあります)
add_newline = false prompt_order = [ ... ] [aws] displayed_items = "profile" [character] use_symbol_for_status = true [directory] truncation_length = 5 [kubernetes] symbol = "🐳 " disabled = false
色もいい感じについてかなり快適な環境になりました。Enter 連打にも耐えうる描画速度で今のところとても満足しています。