vir — 事前定義ディレクトリへ素早くジャンプするツール
概要
vir は “simple tool to quickly jump into your predefined directories” をうたう小さなコマンドラインツールです。V言語で実装されており、単体の実行ファイルが移動先ディレクトリのパスを標準出力に返します。実際のディレクトリ移動はシェル側で行う設計で、README には fish 用のラッパー関数例が示されています。設定の追加や削除を行う対話的なサブコマンドは今のところ提供されておらず、非常にシンプルで軽量なユーティリティとして使えます。
リポジトリの統計情報
- スター数: 4
- フォーク数: 0
- ウォッチャー数: 4
- コミット数: 2
- ファイル数: 10
- メインの言語: V
主な特徴
- V言語で実装された軽量CLI。単一バイナリで配布可能な設計。
- 出力されたパスをシェル側で受け取りcdする方式(シェルラッパーが必要)。
- 設定の追加・更新・削除コマンドは提供されておらず、プリセット中心の簡潔な仕様。
- ライセンスは CC0(パブリックドメイン相当)、自由に利用可能。
技術的なポイント
vir の設計は「ツールは最小の責務に徹する」という哲学が見えます。実行ファイル自身は移動先のパスを返すだけで、実際のカレントディレクトリ変更(cd)はシェル側で行うという分業により、どのシェルでも確実に動作させやすくしています。READMEには fish の例が示されており、以下のようにラッパー関数で受け取った出力を cd しています。
function vir set dest (command vir $argv) and cd $dest end
V言語を採用している点は注目に値します。V はコンパイルが速く、静的にリンクされた単一バイナリを生成しやすいため、配布と実行が容易です。リポジトリの小ささ(コミット数・ファイル数ともに少ないこと)から、プロトタイプ的な実装であり、機能は限定されています。READMEに「update や delete は今のところ追加する予定はない」と明記されているため、ディレクトリの「プリセット」はソースや設定ファイルに静的に記述されているか、実行時引数で決定される実装になっている可能性が高いですが、詳細はソースを直接確認する必要があります。
拡張性の観点では、将来的に次のような改善が考えられます:ユーザーフレンドリーな設定管理(追加・削除・一覧化)、対話式選択UI(fzf 風の選択)、環境ごとの設定読み込み(dotfile や $XDG_CONFIG_HOME)、Windows のシェル(PowerShell / cmd.exe)対応のための出力フォーマット調整など。また、出力がパスのみという単純さは他ツールとの組み合わせを容易にし、スクリプトやエディタのワークフローに組み込みやすい利点があります。セキュリティ面では、出力経由で意図しないパスへ移動しないよう、設定元の信頼性やパス正規化を確認することが重要です。
プロジェクトの構成
主要なファイルとディレクトリ:
- .editorconfig: file
- .envrc: file
- .gitattributes: file
- .gitignore: file
- LICENSE: file
…他 5 ファイル(README.md、実装ファイル(Vソース)やビルドスクリプト等が含まれる想定)
まとめ
シンプルで配布しやすいV製CLI、シェルラッパーと組み合わせて使う実用的なツールです。
リポジトリ情報:
- 名前: vir
- 説明: (mirror) simple tool to quickly jump into your predefined directories or whatever
- スター数: 4
- 言語: V
- URL: https://github.com/yehorovye/vir
- オーナー: yehorovye
- アバター: https://avatars.githubusercontent.com/u/95551108?v=4
READMEの抜粋:
vir
simple tool to quickly jump into your predefined directorieis.
setup
- install vir however you want.
- add a script on your shell to automatically make it work.
example with fish:
function vir
set dest (command vir $argv)
and cd $dest
end
note: i don’t think i’m adding commands to update or delete dirs anytime soon.
license
cc0 1.0 universal <3 …