autojump?

コマンドラインでよく移動するディレクトリに行くのに、autojumprupa/z等が有名ですが、percolでも同じような事ができるのでそちらに移行してみる話です

why

  • autojumpも補完が効くけど、数が増えると最初から一覧がでて絞り込むUIの方がやりやすい
  • なんとなく

percol版

percol で z / autojump のようにディレクトリ高速ジャンプ – Slip Ahead Loggingに書かれているもの殆どそのままですが、
移動したディレクトリが表示されるように少しだけ手を入れてます。

percol+autojump

.cd_history_file

autojumpで使ってるcdの移動履歴はhomebrewで入れた場合は以下のような場所にあって、スコアtパスが並んでるようなファイルが保存されています。(パスは重複しない)

~/.local/share/autojump/autojump.txt

22.360679775    /Users/azu/workspace/Objective-C/LTAPIRequest
22.360679775    /Users/azu/Dropbox/Public/information/slide/tkbjs
20.0    /Users/azu/Dropbox/workspace/Mac/project/GithubReader

これに対して、上記のpercolのzshスクリプトでは .cd_history_file というファイルに
重複ありで移動したパスを追記していくスタイルになってるので、 autojump.txt を以下の形式に変換します。

/Users/azu/workspace/Objective-C
/Users/azu/workspace/Objective-C
/Users/azu
/Users/azu/workspace/Objective-C

Nodeで適当にスクリプトを書いたので、autojump.txtを食わせれば標準出力に変換したものを流してくれます。

node index.js /path/to/autojump.txt > .cd_history_file

EventStreamを使って書くとこういうCLIでパイプを繋いで使うものがキレイに書けて便利な気がします。