👋

ZinitとStarshipでプロンプトをカスタマイズする

2024/02/06に公開

はじめに

zshのプラグインマネージャを使用して、プロンプトをカスタマイズします
類似のものとして↓などがあります

ターミナルはiTerm2を使います

brew install iterm2

Zinit

https://github.com/zdharma-continuum/zinit

READMEを参考にインストールします

bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)"

インストールしたらシェルを読み直して初期化します

source ~/.zshrc
zinit self-update

プロンプト(テーマ)

powerlevel10k, pure, starshipのサンプルがありますが、
今回はstarshipを使用します

~/.zshrcを編集し、以下を追加します

# Load starship theme
# line 1: `starship` binary as command, from github release
# line 2: starship setup at clone(create init.zsh, completion)
# line 3: pull behavior same as clone, source init.zsh
zinit ice as"command" from"gh-r" \
          atclone"./starship init zsh > init.zsh; ./starship completions zsh > _starship" \
          atpull"%atclone" src"init.zsh"
zinit light starship/starship

シェルの設定を読み直すと有効化されます

source ~/.zshrc

フォントインストール

starshipで必要なフォントをインストールします

brew tap homebrew/cask-fonts
brew install --cask font-fira-code-nerd-font

iTemの設定からフォントを変更しておきます

iTerm2 -> Preferences -> Profiles -> Text -> Font
で FireCore Nerd Font を選択

Starshipの設定方法

プリセットを使う

以下から好きなものを選びます
リンク先の一覧から(画像クリックで)設定方法がみれます
https://starship.rs/ja-jp/presets/

Gruvbox Rainbowを使う場合の例です
↓実行すると設定ファイルが作成され見た目が変更されます

starship preset gruvbox-rainbow -o ~/.config/starship.toml

Gruvbox Rainbow

自分で設定する場合

以下に詳しく書いてあります
https://starship.rs/ja-jp/config/

Executing command "..." timed out.という警告が出る場合

↓ここに書いてありますが、プロンプトを表示するためのプログラム実行にタイムアウト設定があります
https://starship.rs/ja-jp/faq/#どうしてexecuting-command-timed-out-という警告が出てくるのでしょうか

以下のコマンドでモジュールの説明やパフォーマンスを調べることもできます
starship explain

設定ファイルにcommand_timeoutを指定して(デフォルトは500ms)変更できますが、
言語のバージョン表示が遅いので設定を変更

format = """
[](color_orange)\
$os\
$username\
[](bg:color_yellow fg:color_orange)\
$directory\
[](fg:color_yellow bg:color_aqua)\
$git_branch\
$git_status\
[](fg:color_aqua bg:color_bg3)\
$docker_context\
[](fg:color_bg3 bg:color_bg1)\
$time\
[ ](fg:color_bg1)\
$line_break$character"""

※バージョン管理にasdfを使っていると遅いようなので、Rust実装のmise(旧rtx)に代替する方法もあります
→Rosettaでハマることがあるようなので試していません
 →x86_64版のmiseを使う必要があります

https://mise.jdx.dev/
https://mise.jdx.dev/tips-and-tricks.html#macos-rosetta

Zshのプラグインを使う

~/.zshrcを編集し、以下を追加します

# Ctrl-R でコマンド履歴検索
zinit light zdharma-continuum/history-search-multi-word
# コマンド補完
zinit light zsh-users/zsh-autosuggestions
# シンタックスハイライト
zinit light zdharma-continuum/fast-syntax-highlighting

こちらもシェルの設定を読み直すと有効化されます

source ~/.zshrc

https://github.com/zdharma-continuum/history-search-multi-word
https://github.com/zsh-users/zsh-autosuggestions
https://github.com/zdharma-continuum/fast-syntax-highlighting

Discussion