ブラウザ等だと戻るボタンや進むボタンがあり履歴をたどれますが、 ターミナルのディレクトリ移動では簡単には出来ません。
それを複数の過去の履歴を残し、さらに戻った場合にはまた進むことも出来るようなことを実現し、 さらにそれを高速で行える様な設定を作りました。
sd_cl
sd_clはディレクトリ移動のためのツールです。
ディレクトリを保存しておいてそこに移動したり、 使ったディレクトリをランキング付しておいてよく使うディレクトリに素早く移動したり出来ます。
このsd_clをロードすることでbdとfdまたupというコマンドも使える様になります。
bd/fd/up
sd_clをロードすることでbdとfdというコマンドが使える様になります。
これはsd_clのcl -b/cl -fへのラッパー関数です。
cdで移動する毎に履歴に保存していき、bdとすると一つ前に戻ります。
戻ると今度は進む履歴の方にディレクトリを保存し、fdで進むことが出来るようになります。
複数個前とかに戻ることも出来て、 ちょっと混乱しかねますが、0から始まる数で決めます。
つまりbd 0は単なるbdと一緒。bd 1で2つ前に居た時のディレクトリ、bd 2で3つ前…と言った感じ。
fdについても同様です。
もう一つ、upというコマンドも使えるようになり、これを使うと
一つ上のディレクトリに移動できます。
キーバインドして高速に移動する
コマンドとして利用しても便利は便利ですが、 キーバーンド設定することでさらに高速に移動できる様になります。
以下の様な設定がsd_clの中に入っていて
自動的にキーバインドが設定されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
追記: 2018/08/21
Bashのキーバインドもスクリプト内に追加。
追記ここまで
もし自動的にやりたくなかったり別のキーに設定したい場合には
SD_CL_KEYBINDING=0を設定して好きなbindkeyを上の様な感じで
.zshrcや.bashrc書いたりしてください。
これで
Meta(AltorCmd)-o: 一つ前に戻るMeta(AltorCmd)-i: 一つ先に進むMeta(AltorCmd)-u: 一つ上に上がる
と言ったディレクトリ操作ができるようになります。
実際にやってみたのがこちら。
Bashバージョン

Zshバージョン

表示の中で⌥との組み合わせの様に出てますが、 これはiTerm上で⌥をメタキーとして使用する設定があり、 それを⌘で使うためにKarabiner-Elementで送るキーを⌘から⌥に 変換しているためです。
なので実際に送ってるボタンは⌘になっています。
WindowsならAltです。
Bashの場合には指定コマンドを通常の実行をする様な形でコマンドが表示されますが、 Zshでは設定次第でその場を動かず指定関数を実行することが出来ます。
下のZshの例ではその場でプロンプトに表示されてるディレクトリが変更されてるのがわかると思います。
キーバインドですが、これは今は亡きVimperatorでブラウザの戻る、進むを
Ctrl-o、Ctrl-iに設定していたのでこれにしたかったのですが、
特にCtrl-iはTabそのものなので設定してしまうとタブ操作が全ておかしくなってしまうので
メタキーの方に設定しています。
(Ctrl-oはEnterとは別物ですがEnterの様な動作をするものです。)
Meta-bやMeta-fは1単語戻る、進む、に割り当てられてるので避けた方が良いかと。
ctrl-bやctrl-fは1文字戻る、進む、です。

