8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rustでターミナルのディレクトリ移動を高速化する

Posted at

@b4b4r07 さんの enhancdというアプリがあります。

ディレクトリ移動を簡単にするものでかれこれもう2年ぐらい使ってる感じ。

大変便利でこれなしの生活は考えられませんでした。でも履歴が溜まってだいぶ遅くなってきた感じ。シェルスクリプトだからかな?もしかしてRustで作り直したらもっと早くなるかも。

と特に考えもなしに同様のアプリを自作してみることにしました。

で作ったのがこれ

ジャンプくんといいます。

ディレクトリをジャンプするのでジャンプくんです。中小の町工場がつくった製品のようなゆるいネーミングにしました。(わかるくんとかはかるくんとかそんなゆるい名前の商品がありますねぇ)

demo-gif.gif

lotabout/skimをベースにしています

実行するとディレクトリの一覧が表示されて、fuzzy finderで絞り込めます。
右側にはディレクトリ内をlsした結果が表示されます。
ディレクトリを選択すると移動できます。

なにをしてるか

  1. 現在のディレクトリからルートディレクトリまでにある親ディレクトリを取得
  2. 自分より下にある子ディレクトリも取得
  3. 以前移動したことのあるディレクトリがあれば履歴から取得
  4. Fuzzy finderにまとめて表示
  5. 選択したディレクトリを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機を持ってない)。

8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?