「賢いcd」”z“の俺版fork「knu-z」v2.0をリリースしました(英語版記事)。

オリジナル版をいじっているうちに修正箇所がたくさん見つかり、直しすぎて個別にpull requestすることが困難になり、途中で作者のrupaさんにはforkの存在とそこそこ詳細な変更点リストをメールしたんだけど時すでに遅し。ほかにもforkがたくさんありすぎてうんざりだったかも。とはいえbashの補完は壊れているしzshの補完も古くて(compsys)いまいちだし、というわけでフィードバックについては気にせずにコアのアルゴリズム部以外を大幅に書き直しました。

ついでにcdの補完候補にzのスタック(ディレクトリ移動履歴に基づいてスコアリングされたディレクトリリスト)を含めるようにしたので、「zが使えるホストでだけzを使う」とか、「通常の移動はcd1、よく行くところへの移動はz」なんていう悲しい使い分けは不要になりました。普通にcdを使っていれば、zが有効なら補完候補の上位によく行くディレクトリが現れるという空気のような存在です。

ただし、bashでは補完候補の出現順序を制御する方法がない2ため、cdにおいてはマッチするディレクトリがないときだけzのスタックから補完します。(常に含めてしまうと、辞書順ソートのおかげでうざいことになる)
ていうかzshを使えばいいと思います。

インストールは~/.bashrc~/.zshrcに一行足すだけなので、READMEを読んで使ってみて。

  1. cdはCDPATHを見るとか-に戻れるとかcdable_varsとかいろいろ特徴があるのでzだけでは済まない。
  2. よね?あったら教えて。compopt -o nosortとかあればいいのに。