46
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

zshでディレクトリスタックを手軽に移動する

Last updated at Posted at 2012-12-13

シェルを使う上でディレクトリの移動に関する設定は欠かせません。

3つ以上のディレクトリを手早く移動したい時は、bash でもお馴染みの pushdpopddirs を使用してディレクトリスタックの操作をするわけですが、いちいち出し入れするのが面倒です。

zsh のシェルオプション AUTO_PUSHD を有効にすればディレクトリ移動時に元いたディレクトリが自動でスタックに積まれますが、dirs で確認して移動するということが面倒という点は変わりません。

このような時は補完機能を使って楽をします。

以下の例は、補完システムの有効化とメニュースタイルを有効にしてカレントディレクトリは除くという設定です。メッセージ書式は好みです。AUTO_PUSHD するときは DIRSTACKSIZE で上限を決めておくとよいでしょう。

.zshrc
DIRSTACKSIZE=100
setopt AUTO_PUSHD

autoload -Uz compinit && compinit

zstyle ':completion:*' menu select
zstyle ':completion:*:cd:*' ignore-parents parent pwd
zstyle ':completion:*:descriptions' format '%BCompleting%b %U%d%u'

このように設定した状態でいくつかのディレクトリを渡り歩いたあとに cd -<TAB> すると、

zsh
% cd /System/Library/Frameworks/JavaVM.framework/Versions/Current
% cd /var/log
% cd /usr/local/Cellar
% cd -<TAB>
Completing directory stack
1 -- /var/log
2 -- /System/Library/Frameworks/JavaVM.framework/Versions/Current
3 -- /Users/yoshikaw

こんな感じにディレクトリスタックが補完候補として出てきます。

そのまま TAB を押せば1番目が選択状態になります。Ctrl-NCtrl-P で選択の移動もできます。もちろん直接数字を入力して ENTER でも移動できます。

日々の作業に欠かせません。

46
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?