今日は「autojump」のお話。
「autojump」はディレクトリ移動ツールで、ディレクトリ文字列をデータベース化し、そして予測されるディクトリにジャンプします。例えば、
$ j 設計書
とか入力すると、履歴DBから「設計書」という名前の入ったディレクトリを探し出して、それがどんなに遠くだろうと、ぴょ〜んとジャンプしてくれます。頼もしいですよね。
インストール自体は簡単で、
$ brew install autojump
シェルに「bash」や「zsh」を使っているなら、後は画面に指示されている通りに設定を追加すれば良いだけなのですが、それでは面白くないので、ここは敢えて、対象外のシェルで使用する事にします。
1. sh/ksh系
sh系には、MAC標準の「sh」とHomebrewでインストールできるash系の「dash」があります。
ksh系には、MAC標準の「AT&T版」と、Homebrewでインストールできる「Public domain版」と、同じくHomebrewでインストールできる「MirBSD版」があります。
ログインシェルとして起動した場合、まず「~/.profile」が読み込まれるのは全て同じなのですが、その次の挙動が異なります。
環境変数「ENV」を設定していない場合、「AT&T版」は「~/.kshrc」を、「MirBSD版」は「~/.mkshrc」を続けて読み込みますが、他のシェルは何も読み込みません。
環境変数「ENV」にファイル名を設定するとそれを読み込むのは、全てのシェルで同じですが、今度はシェルそれぞれを使い分けようとすると、微妙に文法が違っていたりしてするので、一つのファイルに設定を書いていく場合には注意が必要です。
ちなみに、もしこれらシェルごとに違う設定をしたいのであれば「~/.profile」に、
# Read next script ENV=.`echo $0 | sed -e s/-//`rc; export ENV
とか書いておくのも方法の一つですよ。
こう書いた場合、「ksh」「pdksh」なら「~/.kshrc」、「mksh」なら「~/.mkshrc」、「sh」なら「~/.shrc」、「dash」なら「~/.dashrc」を、それぞれ読むようになります。
ただしこれはログインシェルの場合に限ります。
脱線してごめんなさい。
いずれにせよ、これら「sh系/ksh系」で「autojump」を使うためには、設定ファイルでプロンプト環境変数「PS1」を定義した後に、以下の内容を書いておきます。
# for Autojump
PS1='$(autojump -a $PWD >/dev/null 2>&1)'$PS1
j() {
cd `autojump $*`
}
これで「autojump」のコマンド「j」が使えるようになりました。
2. csh/tcsh系
昔と違って人気がないようで寂しい限りです。
みんなの憧れの的だったんですけどね・・・
# for Autojump alias cwdcmd 'autojump -a $cwd > /dev/null' alias j 'cd `autojump \!*`'
こんな感じで設定ファイルのどこか片隅にでも置いてあげてください。
3. rc
さて「rc」ですが、文法は違いますが「csh」と同じような感覚で大丈夫です。
プロンプト関数の中に書くことに注意してください。
# user prompt fn prompt { cwd=`{/bin/pwd | /usr/bin/sed -e s@^$home@~@} prompt=$LOGNAME'@'$hostname'['$cwd'] ' autojump -a $PWD >[2=1] >/dev/null } # for autojump fn j { cd `{command autojump $*} }
4. fish
最後に大好きなfishお姉様です。
「fish」の場合も「csh」と同じような感覚ですが、元々システムが準備しているプロンプト関数がありますので、まずそれをコピーします。
$ cp /usr/local/share/fish/functions/fish_prompt.fish ~/.config/fish/functions
それから「~/.config/fish/functions/fish_prompt.fish」をエディタで開いて、一番最後の方に、
echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" '> ' end # for autojump autojump -a $PWD > /dev/null & end
この2行を追加します。
そして設定ファイルに、
# for autojump function j cd (command autojump $argv) end
この関数設定を追加すれば準備万端。
さあ一緒にディレクトリサーフィンを楽しみましょう!
ピンバック: CDPATH | VivaFan通信
ピンバック: 「fish」シェルを実際に使うために | VivaFan通信