🐍
`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