Qiita 見てたらこんな投稿を見つけた。
Zsh - よく作業するDirをBookmarkするshellスクリプト - Qiita
だいたい、よく使うディレクトリに cd したいとき cd ~/work/project/ruby/web
とか長い名前を打つのはめんどくさい。$CDPATH
を通しておくっていう手もあるけど、タブで補完したときに候補がいっぱい出たりして微妙に便利じゃない。そんなときにこれを使えばディレクトリの移動が簡単になる。
ちょっと改良の余地があるというか、タブで補完できるようにしたらもっと便利になると思って、独立した zsh のプラグインとして書き直したので紹介する。
このプラグインでできること
cd-bookmark というプラグインを作った。これをインストールすれば cd-bookmark
というコマンドが使えるようになる。
こいつを使えばよく使うディレクトリに別名を付けてブックマークできる。移動するときはその別名を指定すればOK。
他のディレクトリ移動を便利にする系プラグインは、だいたい移動した履歴を自動で覚えてるやつが多いと思う。それに対して、こいつは手動で登録する。手でする手間はあるけど、その分勝手にいっぱい登録されたりしなくて、厳選されてる感じになる。よく使うディレクトリが決まってる人はこっちのほうが便利だと思う。
使っている様子はこんな感じ。
# 今は '/home/mollifier/work' にいるとする
% pwd
/home/mollifier/work
# -a オプションで今いるディレクトリをブックマークに追加する。
% cd-bookmark -a work
# 適当に他の場所に移動する
% cd
# 'work' を指定すれば /home/mollifier/work に戻れる
% cd-bookmark work
% pwd
/home/mollifier/work
# ブックマークは何個でも登録できる
% cd /home/mollifier/tmp
% cd-bookmark -a tmp
# オプション無しで登録済のブックマーク一覧を表示する
% cd-bookmark
tmp|/home/mollifier/tmp
work|/home/mollifier/work
# タブでブックマーク名を補完できるので簡単に選べる
% cd-bookmark [TAB]
tmp work
インストール
まず cd-bookmark から cd-bookmark, _cd-bookmark と2つファイルを取ってきて $fpath の通ったところに配置する。その後に .zshrc
で autoload
すれば OK。
例えば $HOME/zsh/functions/cd-bookmark
の下に配置したい場合はこんな感じ。
% cd $HOME/zsh/functions
% git clone https://github.com/mollifier/cd-bookmark.git cd-bookmark
# 手動でやる場合は $HOME/zsh/functions/cd-bookmark ディレクトリを作成して、
# その下に cd-bookmark, _cd-bookmark を置く
その後 ~/.zshrc
にこんな感じで書く。
fpath=($HOME/zsh/functions/cd-bookmark(N-/) $fpath)
autoload -Uz cd-bookmark
alias cdb='cd-bookmark'
最後の alias
は必須じゃないけど設定しておくと便利。b
とか一文字の alias にするのもありだと思う。
注意としては、fpath
を設定するところは autoload -Uz compinit
とやってるとこより前に書くこと。そうじゃないとこのプラグインの補完がうまく動かなくなる。
使い方
基本的な使い方
-a オプションで今いるディレクトリをブックマークに追加する。後に付けた引数がブックマーク名になる。
% cd ~/work
% cd-bookmark -a work
% cd ~/etc/config
% cd-bookmark -a config
オプションを付けずに実行すると、今登録されているブックマークを一覧表示する。
% cd-bookmark
config|/home/mollifier/etc/config
work|/home/mollifier/work
見ての通り 「ブックマーク名|ディレクトリパス」 という形で保存している。
ブックマーク名を付けて実行すると、対応するディレクトリに移動する。
% cd-bookmark work
% pwd
/home/mollifier/work
% cd-bookmark config
% pwd
/home/mollifier/etc/config
タブでブックマーク名が補完できるので、簡単に選べて便利。
ブックマークからの相対的なパスに移動する
ブックマーク名の後ろにパスを付けることもできる。そうしたときはブックマーク先ディレクトリからの相対的なパスに移動する。
# 例
# work というブックマーク名で /home/mollifier/work に移動できるとする
% cd-bookmark work
% pwd
/home/mollifier/work
# さらに、/home/mollifier/work の下にはこんなディレクトリがあったとする
# /home/mollifier/work
# |-myproject/
# |-tmp/
# | |-images/
# | `files/
# `zsh
# ブックマーク名の後ろに、ブックマーク先ディレクトリからの相対パスを付けて移動できる
% cd-bookmark work/myproject
% pwd
/home/mollifier/work/myproject
# ここでもタブの補完が効く
% cd-bookmark work/tmp/ [TAB]
images/ files/
% cd-bookmark work/tmp/images
% pwd
/home/mollifier/work/tmp/images
その他のオプション
その他にもオプションがあるので説明する。
-a
でブックマークに登録するときはブックマーク名は省略できる。省略すると自動的に1から順に空いてる数字を探してブックマークの名前として使う。
% cd ~/tmp
% cd-bookmark -a
% cd ~/Dropbox
% cd-bookmark -a
% cd-bookmark
1|/home/mollifier/tmp
2|/home/mollifier/Dropbox
config|/home/mollifier/etc/config
work|/home/mollifier/work
ブックマークに移動するときはブックマーク名の左に -c
オプションを付けても良い。
# cd-bookmark work と同じ
% cd-bookmark -c work
% pwd
/home/mollifier/work
-l
オプションを付けるとブックマーク一覧表示する(オプション無しと同じ動き)。
# cd-bookmark と同じ
% cd-bookmark -l
1|/home/mollifier/tmp
2|/home/mollifier/Dropbox
config|/home/mollifier/etc/config
work|/home/mollifier/work
-e
オプションでブックマークファイルをエディタで開く。
% cd-bookmark -e
EDITOR
環境変数で指定したエディタで開くので、普段使ってる vim とか emacs とかが起動する。ブックマークを削除したり編集したりする機能はコマンドとしては持っていないけど、これでエディタを起動して好きなように編集すればいいと思う。
あと -h
オプションでヘルプが表示される。
% cd-bookmark -h
終わりに
mokemokechicken さんのおかげで便利なプラグインが出来ました。ありがとうございました!
あと作ってから気がついたけど、この投稿の方法で似たようなことができる。
Zsh - よく使うディレクトリに別名をつける - Qiita
でも今回の cd-bookmark の方はディレクトリ移動に特化してる感じで、これはこれで役に立つ思う。
ディレクトリ移動に関してはプラグインとかいっぱいあるので、いろいろ試して便利なやり方を見つけてください!