Help us understand the problem. What is going on with this article?

zsh で cd を横着する方法

More than 3 years have passed since last update.

zsh でも popd, pushd とかあるけれど、使用時間が長くなると結局意味がなかったりしてイマイチ。

また、端末を新たに開いて続きの操作を!って時もいちいち cd するのも面倒なので、端末を開いたら pwd に自動で移動できればといつも思っていた。

これらの問題を解決する瞬間芸的 Tips がこれです。

AUTOJUMP

autojump は cd の履歴管理だけど、移動頻度に応じて表示が上に来るという優れもの。以下のように brew や git などで容易にインストールできる。

% brew install autojump

zsh の設定

zsh のオプションとして、

setopt auto_cd                  # ディレクトリ名と一致した場合 cd 
setopt autopushd
setopt pushd_ignore_dups        # 同じディレクトリは追加しない

を指定しておく。

また、zsh の precmd() 関数を用いて、

#--- zsh 用の設定 ---
. /usr/local/etc/autojump.zsh

#--- cd 時の仕掛け ---
function precmd () {
    pwd=`pwd`
    echo "[^[[35m$pwd^[[m]"
    autojump -a $pwd
    echo $pwd > ~/.curdir
}

といった設定をすることで、change dir(cd) する度に

  • path 指定のみで cd 実行
  • pwd をプロンプトの前の1行に表示
  • 指定した path を autojump に追加
  • 実行の度に pwd 保存

が実行されることになるので、autojump と zsh がよりシームレスに利用できるようになる。

また、.zshrc の最後の行に、

cd `cat ~/.curdir`

とすることで、端末を新規に開くと自動的に前回のカレントディレクトリに移動して始めることができる。

たった1行の設定だが自動的に前回の pwd に移動するので、端末作業中にもう1つターミナルを開きたいとか、中断した作業を再開するといった場合にとても便利で、日々の小さなストレスを軽減する設定として個人的にはとても気に入っている。

注意点

smb mount したフォルダをカレント・ディレクトリとして保存したまま umount すると悲しいことになります。ご注意ください;-)
precmd() に除外するディレクトリ処理を入れるなどした方がよいかも。

ganZ
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした