🐍
`uv run`でファイルパスを補完する方法
Pythonの世界は進化が激しく、ちょっと前までvenv
でプロジェクトを作るのが主流だったのが今はuv
だという。
このuv
はRustベースで動作も機敏だし、venv
の環境やpyproject.toml
も自動で作ってくれるので完成度が高い。今後デファクトになっていくのではないかと思う。
しかし、uv
を使ってみると1つだけ痒いところに手が届かない問題がある。表題の、uv run
でファイルパス補完が効かない問題だ。
uv run [ファイルパス]
解決方法
解決方法がこのGitHub issueに示されているので、紹介する。
以下のファイルをsource uv
するか、他のcompletionファイルが置いてあるディレクトリに置くだけ(例えば、~/.completion.d/
)。
uv
# License: CC0
eval "$(uv generate-shell-completion zsh)"
_uv_run_mod() {
if [[ "$words[2]" == "run" && "$words[CURRENT]" != -* ]]; then
_arguments '*:filename:_files'
else
_uv "$@"
fi
}
compdef _uv_run_mod uv
これでターミナルを再度立ち上げればuv run [TAB]
でファイルの補完が効くようになる。
Discussion