zshの名前付きディレクトリがとても便利
言いたいことの8割は、zshの本の276ページぐらいを読めば大体書いてあります。
名前付きディレクトリの使い方
名前付きディレクトリを使うには、setopt autonamedirs
した上で、変数に/
から始まる文字列を代入します。
$ setopt autonamedirs $ vim_dir=/usr/share/vim/vim74/ $ cd ~vim_dir
このようにすると、vim_dir
にすぐ移動できるようになります。
もうひとつの定義方法
ですが、変数を介すのは気持ち悪いですね。 直接名前付きディレクトリを設定することもできます。
$ hash -d vim_dir=/usr/share/vim/vim74/ $ cd ~vim_dir
少しいい感じの定義になりました。
楽をしたい
ただ、これだと毎回~
を入力しなくてはいけなくて面倒ですね。CDABLE_VARS
オプションを指定すると、~
を省略することが出来ます。
$ setopt CDABLE_VARS $ hash -d vim_dir=/usr/share/vim/vim74/ $ cd vim_dir
これでかなり使いやすくなりましたね。
もっと楽をしたい
また、AUTO_CD
オプションをセットすると、ディレクトリ名だけでcd
することができるようになります。
$ setopt CDABLE_VARS $ setopt AUTO_CD $ hash -d vim_dir=/usr/share/vim/vim74/ $ vim_dir
AUTO_CD
は、名前付きディレクトリだけでなく、普通のディレクトリでもディレクトリ名だけで移動できるようになるオプションです。
楽に定義をしたい
名前付きディレクトリの定義をする時には、やはりディレクトリの存在確認をしたいですよね。
そのほうが、複数環境で使いまわしやすいzshrc
になるでしょう。
というわけで、適当に関数を書いてみました。
function name_dir() # dir, name { local dir=$1 local name=$2 if [ -d $dir ]; then hash -d $name=$dir return 0 else return 1 fi }
下のようにして使います(実際に使っている例です)。
name_dir ~/dotfiles/ d name_dir ~/project/ p name_dir ~/.vim/bundle/ v
こうすると、d
だけで~/dotfiles/
に飛べるようになります。めっちゃ便利。
よくいくディレクトリが深い階層にある人なんかはとても便利に使えると思います。