starship とは
starship は、ターミナルのプロンプトを簡単にカスタマイズするためのツールです。 下記はデフォルト設定でのプロンプト表示例です。

このプロンプトの内容は、カレントディレクトリがどのような言語のプロジェクトであるかによって自動的に変化します。
例えば、Git 管轄下のディレクトリであればブランチ名や編集状態が表示されるし、Golang のプロジェクトであれば Golang のバージョンが表示されます(go.mod ファイルなどが参照される)。
- starship の特徴
- クロスプラットフォーム対応(Windows、macOS、Linux)
- ほとんどのシェルに対応 (bash、zsh、fish、PowerShell、…)
- デフォルト設定で多くの情報を表示(Git ブランチ、Python バージョン、AWS プロファイル、…)
- Rust で実装されているため高速
starship は内部的には PS1 環境変数 (bash/zsh) や prompt 関数 (PowerShell) などのシェルプロンプト設定を置き換えるというシンプルな仕組みで動作しています。
もちろん、PS1 環境変数を自力で設定してプロンプトをカスタマイズすることは可能ですが、starship を使うと簡単に多くの情報を表示できます。
さらに、starship はクラスプラットフォーム対応しているので、一度設定ファイル (~/.config/starship.toml) を作ってしまえば、Windows、Linux、macOS などいろんな環境で同じプロンプト設定を使い回すことができます。
本質的に starship は、さまざまな言語環境や情報を表示するためのツールですが、背景色や Nerd Font によるアイコン表示を組み合わせることで、プロンプトの見た目をより魅力的にすることもできます。

Nerd Font のインストール
Starship は様々なアイコン画像を表示するために Nerd Font 系のフォントがインストールされていることを前提としています(ちなみに、Nerd Font は Vim のステータスライン表示をカスタマイズする Powerline などでも使われています)。
Nerd Font 系のフォントはいろいろありますが、ここでは、日本語のグリフを含んでいる HackGen Nerd Font を使います。
リリースページから .ttf ファイルをダウンロードしてダブルクリック すればインストールできます。
白源(はくげん/HackGen)フォントには下記の 2 種類がありますが、35 の方は「半角:全角」の横幅を「3:5」に調整したものなので、基本は 35 の付いていない方(比率1:2)を使います。
HackGen Console NF←こっちHackGen35 Console NF
フォントのインストールが完了したら、ターミナルアプリのフォント設定でそのフォントを選択 してください。 これを忘れると、Starship の各種アイコン表示が文字化けしてしまいます。
Starship のインストールと初期化
starship コマンドのインストール
starship はパッケージマネージャーで簡単にインストールできます。
brew install starshipwinget install Starship.Starshipstarship --version コマンドが実行できるようになっていればインストール成功です。
starship の初期化設定
次に、各シェルの設定ファイルで starship init を実行するように設定します。
eval "$(starship init zsh)"eval "$(starship init bash)"Invoke-Expression (&starship init powershell)上記のように starship init コマンドを実行すると、内部的に $PS1 変数(bash/zsh)や prompt 関数(PowerShell)が書き換えられ、プロンプトがこんな感じの表示に切り替わります。

٩(๑❛ᴗ❛๑)۶ 動いたっ
Starship のカスタマイズ
設定ファイル (starship.toml)
starship は ~/.config/starship.toml という設定ファイルでカスタマイズできます(ファイルがなければデフォルト設定で動きます)。
プロンプトとして表示される内容は、トップレベルの format オプションで指定しますが、デフォルトの format 設定 だけでもかなり多くの情報が表示されるようになっています。
format = '$all'
# 下記と同様
format = """
$username\
$hostname\
...
$git_branch\
$git_commit\
$git_state\
..."""複雑なプロンプト設定を 1 つの文字列として表現するのは無理があるため、starship のプロンプト表示設定は上記のようにモジュール化されて管理されています。
例えば、$usename や $git_branch のように表示項目(モジュール)ごとに分割されて管理されており、それぞれの表示設定を TOML のセクションの形で定義します。
[git_branch]
symbol = '🌱 '
truncation_length = 4
truncation_symbol = ''
ignore_branches = ['master', 'main']それぞれの表示項目(モジュール)でどのような設定ができるかは、Starship の Configuration ドキュメントを参照してください(例: git_branch の設定方法)。
例えば、下記のように directory モジュールを設定すると、ディレクトリ名を省略せずにフルパスで表示するようになります。
[directory]
truncation_length = 0 # ディレクトリパスの最大表示セグメント数(0:無制限)
truncate_to_repo = false # リポジトリルートからの相対パスにしないプリセット機能で設定ファイルを生成する
starship preset <プリセット名> というコマンドを使用すると、starship が組み込みで用意してくれている設定例を出力してくれます。
どのようなプリセットが用意されているかは下記のページを参照してください。
例えば、Gruvbox Rainbow というプリセットを使うには次のように設定ファイルを作成します。
$ starship preset gruvbox-rainbow -o ~/.config/starship.toml

#a6da95 のような色指定をしてしまうと正しい色で表示されません(全て一色表示などになってしまう)。
代わりに、パレットのインデックス指定で色を指定するか、True Color 対応のターミナルアプリを使用する必要があります(例: iTerm2 / Alacritty)。
Visual Studio Code 内のターミナルなどは正しく True Color 表示されます。その他
starship print-configstartship explain

