zsh補完関数の書き方をいろいろ調べていたら、autojump-zsh
というパッケージを発見。
気になって使ってみたらめちゃくちゃ便利で、久々に感動したので紹介。
autojump
はcd
コマンドの拡張的なコマンドで、移動したディレクトリを記録し、
ディレクトリ間を行ったり来たりするときに絶大な効果を発揮します。
公式wiki に書いてあるよう
コマンドライン作業の10〜20%はcd
コマンドのため、ディレクトリ移動の動作が
改善すると必然的に作業効率も向上するということです。
実際私もautojumpを使い出してから、作業効率が上がりました。
それでは早速autojumpの説明を。動作検証環境は下記です。
Mac OSX 10.7.3
Fedora 16
Scientifix Linux 6.1
導入方法
autojumpを利用するにはpython2.6か3.0以上が必要です。
yumやbrewでも導入可能ですが、その場合はzsh補完関数_j
ファイルを
自分で配置するあげる必要があります。
私は下記のようにソースから入れました。
1
2
3
4
5
mkdir ~/src
cd ~/src
git clone git://github.com/joelthelion/autojump.git
cd autojump
sudo sh ./install.sh --zsh
2012年3月3日追記 MacでBrewを使って導入する方法
.zshrcに下記を追記。
1
2
3
4
alias j="autojump"
if [ -f `brew --prefix`/etc/autojump ]; then
. `brew --prefix`/etc/autojump
fi
j
でautojumpが動かない場合があるようなので、その場合はalias設定も追加。
autojumpのzsh補完関数の配置
autojumpは同梱されているzshの補完関数_j
で真価を発揮する ので、
補完関数を$fpath
に配置。
$fpathの調べ方は下記のような感じで
1
2
echo $fpath
/usr/local/share/zsh/site-functions /usr/local/share/zsh/4.3.12/functions
通常は
/usr/share/zsh/site-functions/
や/usr/local/share/zsh/site-functions/
などになるかと思います。
私は下記のような感じで配置。
1
sudo cp ~/src/autojump/_j /usr/local/share/zsh/site-functions/
exec zsh
では、なぜかautojumpが有効にならないので、ログインし直した方が良いです。
利用方法
cd
コマンドで移動するたび~/.local/share/autojump/autojump.txt
にディレクトリ名と回数が記録され、
次回そのディレクトリに移動する際はj
コマンドを用いて
という感じで移動出来ます。
たとえば~/misc/hogehoge
というディレクトリの場合、
1
2
3
j h[tab]
または
j ge[tab]
などディレクトリの一部だけ入力して移動でき、キー入力の回数が激減 です。
ちなみにautojump出来るディレクトリのリストは
で確認が出来ます。
使い始めは「ctrl+r ディレクトリ名
とかで十分じゃん」とか「zshのディレクトリスタック使えば良いじゃん」
とか思ってたんですが、使い込むうちにautojumpだとカレントディレクトリとか移動先のディレクトリの
相対パスと絶対パスを意識しなくて良いことがわかり、何よりキー入力の数が格段に減る ので、
今ではautojump無しの生活は考えられなくなりました。
autojumpを活用して作業効率を改善させましょう。