Table of contents
はじめに
私は、starshipという shell をカスタマイズするツールを使用している。例えば、Python のプロジェクトディレクトリに移動したときは以下のような表示となる。
git の状態や、Python のバージョンが表示されていることが分かる。この starship を利用したときに、少しコマンドが遅くなった感じた。この記事では、その原因と解決方法について詳述する。
使用する各バージョンは、以下の通り。
# OS: Windows 10
➜ pyenv --version
pyenv 3.1.1
➜ starship --version
starship 1.16.0
branch:master
commit_hash:
build_time:2023-07-30 13:40:31 +00:00
build_env:rustc 1.71.0 (8ede3aae2 2023-07-12),stable-x86_64-pc-windows-msvc
原因調査
starship には explain というサブコマンドがあり、これを用いると各表示項目の遅延時間を知ることができる。
starship explain
実行結果
Here's a breakdown of your prompt:
"test " (1ms) - The current working directory
"on master " (<1ms) - The active branch of the repo in your current directory
"[?] " (25ms) - Symbol representing the state of the repo
"is 📦 v0.1.0 " (<1ms) - The package version of the current directory's project
"via 🐍 v3.10.11 " (243ms) - The currently installed version of Python
"➜ " (<1ms) - A character (usually an arrow) beside where the text is entered in your terminal
実行結果を詳しく見ると、Python のバージョン表示が遅延の主な原因であることが判明した。この Python は pyenv を介してインストールしている。
一度 pyenv をアンインストールして、Python を公式からインストールした場合、上記の遅延は解消された。また、virtual environment をアクティベートした場合についても、同様の結果が得られた。
test on master [?] is 📦 v0.1.0 via 🐍 v3.10.11 (test-py3.10)
➜ starship explain
Here's a breakdown of your prompt:
"test " (2ms) - The current working directory
"on master " (<1ms) - The active branch of the repo in your current directory
"[?] " (24ms) - Symbol representing the state of the repo
"is 📦 v0.1.0 " (<1ms) - The package version of the current directory's project
"via 🐍 v3.10.11 (test-py3.10) " (12ms) - The currently installed version of Python
"➜ " (<1ms) - A character (usually an arrow) beside where the text is entered in your terminal
これらの結果から、問題の原因は pyenv にあると確認された。
対応
完全な解決ではないが、Python のバージョンを非表示とすることにした。virtual environment をアクティベートして開発するので、アクティベートしたバージョンのみ表示する。
以下のコマンドを実行することで、starship の設定ファイルを開くことができる。
starship config
この設定ファイル内で、Python の表示設定を以下のように変更する。
[python]
format='via [${symbol}(\($virtualenv\) )]($style)'
ファイルを保存し、動作確認する。
➜ starship explain
Here's a breakdown of your prompt:
"test " (1ms) - The current working directory
"on master " (<1ms) - The active branch of the repo in your current directory
"[?] " (23ms) - Symbol representing the state of the repo
"is 📦 v0.1.0 " (<1ms) - The package version of the current directory's project
"via 🐍 " (<1ms) - The currently installed version of Python
"➜ " (<1ms) - A character (usually an arrow) beside where the text is entered in your terminal
速度が改善されたことが分かる。
最終的には以下のような見た目となる。
最近話題の技術書
GitLab のチームビルディングに関する本。