cdの履歴保存(ディレクトリスタック)
ArchWikiのZsh
ページにディレクトリスタックの項目があった。
これが結構便利なんだけれど,シェルを複数開いていると機能しない。
そして俺は普段からターミナルのタブを大量に開いているのでこのままじゃ使えない。ので改変した。
やったこと
ArchWikiの記述をベースにしつつ,
シェルを開く毎に個別のディレクトリスタックファイルを作成できるように,.zshrc
へ以下を加筆。
DIRSTACKFILE="$HOME/.cache/zsh/dirs/`\date +%d%M%N`"
if [[ -f $DIRSTACKFILE ]] && [[ $#dirstack -eq 0 ]]; then
dirstack=( ${(f)"$(< $DIRSTACKFILE)":} )
[[ -d $dirstack[1] ]] && cd $dirstack[1]
fi
chpwd() {
print -l $PWD ${(u)dirstack} >$DIRSTACKFILE
}
DIRSTACKSIZE=20
setopt autopushd pushdsilent pushdtohome
setopt pushdignoredups
setopt pushdminus
DIRSTACKFILE
に時刻の情報を付けて,重複を回避しただけ。
自分の環境だとdate
コマンドにはエイリアスを設定しているので,1行目は\date
にした。
%d%M%N
で日付分ミリ秒
を出力させる。
DIRSTACKSIZE
は何となく20にした。
できたこと
すごーい!いくらでもシェルを開けるんだね!
便利なところ
あちこちcd
していじっている時に
$ cd -
と打ってから<tab>
とかすると幸せになれる。かも。
詳しくはArchWiki参照。