よくある質問
デモGIFで使用される構成は何ですか?
- ターミナルエミュレータ: iTerm2
- テーマ: Minimal
- カラースキーム: Snazzy
- フォント: FiraCode Nerd Font
- シェル: Fish Shell
- 設定: matchaiのDotfiles
- プロンプト: Starship
デモのGIFのようにコマンド補完はどうしたら使用できますか?
補完サポート、または自動補完は選択したシェルによって提供されます。 デモ中では、デフォルトのFish Shellによって補完されています。 Z Shell (zsh) を利用しているのであれば、zsh-autosuggestionsを参照してください。
トップレベルのformat
と<module>.disabled
は同じように動作しますか?
はい、両方ともプロンプトでモジュールを無効にするために使用できます。 モジュールを無効にするだけの場合は、これらの理由から<module> .disabled
を無効にする方法をお勧めします。
- モジュールを無効化することは、トップレベルの
format
を削除するよりも明示的です。 - Starshipが更新されると、新しく作成されたモジュールがプロンプトに追加されます
Starshipはcross-shellとのことです。 私の好みのshellはサポートしていないようですが。
Starshipの構築方法は、事実上すべてのシェルのサポートを追加できるはずです。 Starshipのバイナリはステートレスであり、シェルに依存しないため、シェルがプロンプトのカスタマイズとシェルの拡張をサポートしている限り、Starshipを使用できます。
Starshipをbashで動作させる例を次に示します。
# Get the status code from the last command executed
STATUS=$?
# 実行中のジョブの数を取得します。
NUM_JOBS=$(jobs -p | wc -l)
# プロンプトを `starship prompt`に設定
PS1="$(starship prompt --status=$STATUS --jobs=$NUM_JOBS)"
Starshipに組み込まれたBashの実装は、 Command Durationモジュールなどの高度な機能を可能にし、Starshipが事前にインストールされたBash構成と互換性があるようにするため、少し複雑です。
Starshipのプロンプト
で受け入れられるすべてのフラグのリストは、次のコマンドを取得できます。
starship prompt --help
プロンプトは提供されているコンテキストを使用しますが、フラグは「必須」ではありません。
古いバージョンの glibc を使用する Linux ディストリビューションで Starship を実行するにはどうすればよいですか?
CentOS6や7などで事前にビルドされたバイナリを使用していて、"version 'GLIBC_2.18' not found (required by starship)" のようなエラーが出た場合、glibc
の替わりに musl
でコンパイルされたバイナリを使用できます。
curl -sS https://starship.rs/install.sh | sh -s -- --platform unknown-linux-musl
どうしてExecuting command "..." timed out.
という警告が出てくるのでしょうか?
Starship は、プロンプトに表示する情報 (例えば、プログラムのバージョンや現在の git ステータス) を取得するために、異なるコマンドを実行します。 これらのコマンドの実行中に Starship の応答がなくなるのを防ぐためにタイムリミットが設定されています。コマンド実行にタイムリミットよりも長い時間がかかった時、コマンド実行がキャンセルされ上記の警告が表示されます。これは意図的な動作です。 タイムリミットは command_timeout
key を用いて変更可能ですので、お望みであればタイムリミットを長くできます。 更に以下のデバッグ手順によって、どのコマンドの実行に時間がかかっているかや、それを高速化できるかについて確認できます。 最終手段として、環境変数 STARSHIP_LOG
に error
を設定することでこれらの警告を非表示にできます。
よくわからない記号を見つけました。これはどういった意味ですか?
不明な記号に遭遇した場合、starship explain
を使用することで、現在表示しているモジュールの説明を見ることができます。
Starshipがなにか想定外の挙動をしているとき、どのようにデバッグすればよいですか?
環境変数 STARSHIP_LOG
を使用してデバッグログを有効にできます。 特定のモジュールをデバグしようとしているとき、デバッグログが過度に冗長になることがありますが、その場合は module
コマンドが役立ちます。例えば、rust
モジュールをデバグしようとしているとき、以下のコマンドを用いてこのモジュールからのログと出力を取得できます。
env STARSHIP_LOG=trace starship module rust
Starship が遅い場合は、 timings
コマンドを使って特定のモジュールまたはコマンドが悪さをしているか確認できます。
env STARSHIP_LOG=trace starship timings
トレースログおよび、実行に 1 ミリ秒以上かかったか何か出力をした全てのモジュールの個別解析を出力します。
バグを見つけた場合は、 bug-report
コマンドを用いて GitHub の問題を作成できます。
starship bug-report
私のプロンプトで記号のグリフがないのはなぜですか?
よくある原因はシステム上での設定ミスです。 いくつかのLinuxディストリビューションの初期設定にフォントサポートがありません。 次のことを確認してください。
- ロケールが、
de_DE.UTF-8
やja_JP.UTF-8
などのUTF-8に設定されている。LC_ALL
がUTF-8でない場合、変更する必要があります。 - 絵文字フォントがインストールされている。 ほとんどのシステムにはデフォルトで絵文字フォントが付属していますが、 一部 (特にArch Linux) はそうではありません。 通常、システムの パッケージマネージャーからインストールすることができます。--noto emojiは一般的な選択肢です。
- Nerd Fontを使用している。
ターミナルで以下のコマンドを実行することでテストできます。
echo -e "\xf0\x9f\x90\x8d"
echo -e "\xee\x82\xa0"
一行目は蛇の絵文字、二行目はpowerline branch symbol (e0a0)が表示されるはずです。
もし、どちらの記号とも正しく表示されない場合は、システムの設定が間違っています。 不幸にも、正しくフォントを設定するのは難しいものです。 Discordのユーザーが助けてくれるかもしれません! もし記号が正しく表示されているのにもかかわらず、Starshipが正しく表示されていない場合は、バグの報告をお願いします。
Starshipをアンインストールしたい
Starshipのアンインストールはインストールと同じぐらい簡単です。
- Starshipを初期化するために使用した、シェルの設定行を削除します (例:
~/.bashrc
)。 - Starshipのバイナリを削除します。
パッケージマネージャーを使用してStarshipをインストールした場合は、パッケージマネージャーのアンインストールガイドを参照してください。
Starship をインストールスクリプトを使用してインストールした場合、次のコマンドでバイナリが削除されます。
# starshipのバイナリを見つけて削除
sh -c 'rm "$(command -v 'starship')"'
sudo
を使わずに Starship をインストールするにはどうすればいいですか?
インストールシェルスクリプト (https://starship.rs/install.sh
) はインストール先のディレクトリが現在のユーザによって書き込みできない時に限り sudo
の使用を試みます。 既定のインストールディレクトリは、 $BIN_DIR
環境変数の値、または$BIN_DIR
が設定されていない場合は /usr/local/bin
です。 インストールディレクトリを現在のユーザが書き込みできるディレクトリに設定すれば、 sudo
なしで Starship をインストールできます。 例えば curl -sS https://starship.rs/install.sh | sh -s -- -b ~/.local/bin
は、インストールスクリプトにコマンドラインオプション -b
を指定してインストールディレクトリを ~/.local/bin
に設定します。
Starship の非対話形式でのインストールでは、確認をスキップするために -y
オプションを追加することを忘れないでください。 対応しているオプションの一覧についてはインストールスクリプトのソースをご確認ください。
パッケージマネージャーを使う時は、 sudo
を使ったまたは使わないインストールに関して、パッケージマネージャーのドキュメントを参照してください。