Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
98
Help us understand the problem. What is going on with this article?
@mollifier

よく使うディレクトリをブックマークする zsh のプラグイン

More than 5 years have passed since last update.

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 の通ったところに配置する。その後に .zshrcautoload すれば 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 にこんな感じで書く。

.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 の方はディレクトリ移動に特化してる感じで、これはこれで役に立つ思う。

ディレクトリ移動に関してはプラグインとかいっぱいあるので、いろいろ試して便利なやり方を見つけてください!

98
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
mollifier
zsh, vim, vimperator, JavaScript, iOS, .NET に興味があるプログラマ

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
98
Help us understand the problem. What is going on with this article?