見出し画像

Starshipでシェルプロンプトをイケてる感じにする

Starshipというシェルのプロンプトを素敵にするツールのお話をしようと思います。
プロンプトと聞くとAIしか思い浮かばない昨今ですが、シェルもまだまだ使うぞということで。

🎄この記事は note株式会社 Advent Calendar 2023 の16日目の記事です🎄

はじめに

12月16日ですね。
私事ですが、noteに入社した日からちょうど1年が経ちました。今日から2年目突入です。

この1年を熱く振り返る記事を書くことも想定して今日の枠を陣取ったのですが、せっかくなんでなんか個別の技術ネタを書こうと思いまして。

とはいえ年末なんでカッチリしたネタではなく、気楽なネタを書いていきます。(カッチリした技術ネタがないわけではない、決して。)

というわけで本題に入っていきますと、
私自身基本的にリモートワークなこともあって、画面共有することはあれど同僚のターミナル画面を見る機会は以前ほど多くありません。

この記事を読んでくださった方の中にもそういった方はいるかもしれないので、私こんなん使ってますという共有をしつつの紹介になります。

Starshipとは

シェル用の最小限の、非常に高速で、無限にカスタマイズ可能なプロンプトです!

https://starship.rs/ja-JP/

ということで、タイトルと冒頭にも書いた通りシェルプロンプトの見た目をイケてる感じにするやつですね。
Oh My Zshとかと同じようなやつです。

イケてる気持ちになれるのが一番大きな効果ですが、それだけでなく現在のgitブランチや言語のバージョンが表示されることで作業効率も少なからず向上するはずです。

設定手順は公式ドキュメントを確認いただく方がいいので詳細は割愛しますが、brewとかでインストールして、.zshrcなどシェルのconfigに1行足すだけです。
その後、starship.tomlという設定ファイルを編集していって自分好みのプロンプトにしてきます。

表示できる情報としては、これまた全容は公式ドキュメントを確認いただきたいですが例えば

  • 端末のリソース情報

  • Gitリポジトリのブランチやファイル変更数などのステータス

  • プログラミング言語のバージョン情報

  • AWSなどクラウドのプロファイル情報

  • Docker、Kubernetesなどのコンテキスト情報

などがあります。
プラグインを入れなくてもこれらのように大概の情報を出せるのが前述のOh My Zshなどと比較しても優れたポイントかと思います。

これがワテの設定ファイルや

私の会社PCに入っている設定です。

format = """
$directory\
$git_branch\
$git_status\
$git_metrics
$character
"""

right_format = "$ruby"

[directory]
truncation_length = 5
truncate_to_repo = false
truncation_symbol = "…/"
style = "white"

[git_branch]
format = "[$symbol$branch(:$remote_branch)]($style) "
style = "purple"

[git_status]
style = "purple"

[git_metrics]
disabled = false
added_style = "green"
deleted_style = "red"

[ruby]
format = "[$symbol($version )]($style) "
style = "red"

実際のプロンプトがこちらです。

晒したものの地味ですね。。
これがアドベントカレンダーで晒すプロンプトの姿かよ。

個人的にはゴテゴテしたのは好きじゃないのでこれで満足しているのですが、これで記事を終わるのもアレなんで少し盛っていきます。

年の瀬なんで盛っていきます

というわけで盛ったファイルがこちらです。

format = """
$os\
$hostname\
$time\
$battery\
$memory_usage
$directory\
$git_branch\
$git_status\
$git_metrics
$character
"""

right_format = "$ruby"

[os]
disabled = false

[hostname]
ssh_only = false
format = "[$ssh_symbol$hostname]($style) "
style = "bold dimmed red"

[time]
disabled = false
format = "[$time]($style) "
style = "bold dimmed cyan"

[battery]
full_symbol = '🔋 '
charging_symbol = '⚡️ '
discharging_symbol = '💀 '

[[battery.display]]
threshold = 100
style = "bold dimmed yellow"

[memory_usage]
disabled = false
threshold = 0
format = "[$symbol$ram( $percentage%)]($style) "

[directory]
truncation_length = 5
truncate_to_repo = false
truncation_symbol = "…/"
style = "white"

[git_branch]
format = "[$symbol$branch(:$remote_branch)]($style) "
style = "purple"

[git_status]
style = "purple"

[git_metrics]
disabled = false
added_style = "green"
deleted_style = "red"

[ruby]
format = "[$symbol($version )]($style) "
style = "red"

プロンプトはこんな感じ。

PC名がダサいのは気にしないでください。

ターミナルで知りたいわけでない情報が多々ありますが(コマンド実行し続けないとリアルタイム情報でもないし…)、しばらくはこの設定でいこうかと思います。

クラウドのアカウントやKubernetesのコンテキスト切り替えを頻繁にする方は、それらを表示するとさらに盛れる上に事故率も下がっていいのではないでしょうか。

おわりに

以上、紹介でした。
みなさん、よいシェルプロンプトライフを!

▼noteエンジニアアドベントカレンダーはこちら

▼さらにnoteの技術記事が読みたい方はこちら


この記事が気に入ったらサポートをしてみませんか?