ブラウザ等だと戻るボタンや進むボタンがあり履歴をたどれますが、 ターミナルのディレクトリ移動では簡単には出来ません。
それを複数の過去の履歴を残し、さらに戻った場合にはまた進むことも出来るようなことを実現し、 さらにそれを高速で行える様な設定を作りました。
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
(Alt
orCmd
)-o
: 一つ前に戻るMeta
(Alt
orCmd
)-i
: 一つ先に進むMeta
(Alt
orCmd
)-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文字戻る、進む、です。