🚀
Starship+asdfでプロンプトの表示が遅い問題を解決
最近またshellの環境を改善しようとしており、色々とバージョンを上げたりしているうちにやたらとプロンプトの表示に時間がかかるようになってきた。
も解決手段の一つではあるが、流石に面倒なのとそもそも言語のバージョンなどの表示はlsdコマンドで視覚的に伝わるため削除することとした。また大量の言語が並ぶと視覚的にうるさい。
starship explain
するとこうなる。
pythonはasdfで入れているものだが普通に python -V
するだけで700ms以上かかっていた。
❯ time python -V
Python 3.8.3
________________________________________________________
Executed in 738.26 millis fish external
usr time 13.21 millis 0.15 millis 13.05 millis
sys time 16.80 millis 1.10 millis 15.70 millis
設定
Starshipのプロンプトのデフォルト設定はここにある。
デフォルト設定の中から利用している必要なものだけを設定した。今使っている ~/.config/starship.toml
はこちら。
format = """
$directory\
$git_branch\
$git_commit\
$git_state\
$git_metrics\
$git_status\
$cmd_duration\
$line_break\
$character\
"""
[cmd_duration]
min_time = 5000 # ms
これで
こうなる。
一応formatのそれぞれの意味
-
$directory
-
dotfiles/config
部分。gitリポジトリのrootからのパスを表示するなど賢く、不便に思ったことはない。
-
$git_branch
$git_commit
$git_state
$git_metrics
-
$git_status
- gitリポジトリ以下にいるとブランチ名や差分のあるファイルを表示してくれる。mergeやrebaseの最中であることも教えてくれる。便利。
-
$cmd_duration
- 指定した時間以上に時間がかかった際に教えてくれる。
-
$line_break
- 改行
-
$character
-
❯
部分。vi操作を利用しているとノーマルモードで❮
に変化するのが嬉しい。
-
結論
根本原因は python -V
に時間がかかりすぎていることだが、見ない情報なので言語とそのバージョンをプロンプトに表示しないこととして解決した。
Discussion