@b4b4r07 さんの enhancdというアプリがあります。
ディレクトリ移動を簡単にするものでかれこれもう2年ぐらい使ってる感じ。
大変便利でこれなしの生活は考えられませんでした。でも履歴が溜まってだいぶ遅くなってきた感じ。シェルスクリプトだからかな?もしかしてRustで作り直したらもっと早くなるかも。
と特に考えもなしに同様のアプリを自作してみることにしました。
で作ったのがこれ
ジャンプくんといいます。
ディレクトリをジャンプするのでジャンプくんです。中小の町工場がつくった製品のようなゆるいネーミングにしました。(わかるくんとかはかるくんとかそんなゆるい名前の商品がありますねぇ)
lotabout/skimをベースにしています
実行するとディレクトリの一覧が表示されて、fuzzy finderで絞り込めます。
右側にはディレクトリ内をlsした結果が表示されます。
ディレクトリを選択すると移動できます。
なにをしてるか
- 現在のディレクトリからルートディレクトリまでにある親ディレクトリを取得
- 自分より下にある子ディレクトリも取得
- 以前移動したことのあるディレクトリがあれば履歴から取得
- Fuzzy finderにまとめて表示
- 選択したディレクトリをprintする
Rust側から直接ディレクトリ移動させる方法がなかったので
function jump-kun-jump(){
local selected=$(jump-kun)
if [[ -n $selected ]]; then
\cd $selected
fi
}
というシェルスクリプトにPrintの内容を受け取らせてCDしています。
まだcrate.ioに登録してないので、レポジトリを直接クローンしてインストールしてください。
よろしくおねがいします
まだいろいろ治すところもあるのでベータ版です。
筆者のPC(Mint Linux + zsh)では動きました。たぶんLinux、Macでは問題なく動くと思います。
Windowsはよくわかりません(というかそもそもWindows機を持ってない)。