zsh に組み込まれているコマンドに cdr という
開いたディレクトリの履歴からディレクトリを開くコマンドがあります。
~/.zshrc で cdr を有効にしてあげれば使えるようになります。
$HOME/.cache/shell/ は用意しないといけないので
mkdir -p $HOME/.cache/shell/ しておいて下さい。
# cdr, add-zsh-hook を有効にする autoload -Uz chpwd_recent_dirs cdr add-zsh-hook add-zsh-hook chpwd chpwd_recent_dirs # cdr の設定 zstyle ':completion:*' recent-dirs-insert both zstyle ':chpwd:*' recent-dirs-max 500 zstyle ':chpwd:*' recent-dirs-default true zstyle ':chpwd:*' recent-dirs-file "$HOME/.cache/shell/chpwd-recent-dirs" zstyle ':chpwd:*' recent-dirs-pushd true設定については以下を参考にして下さい。
zsh: 26. User Contributions
zshでcdの履歴管理に標準添付のcdrを使う - @znz blog
使い方
確認
cdr -l
1 ~/.zsh
2 ~/.zsh/peco-scripts
3 ~/Documents/workspace
4 ~/dotfiles
1 ~/.zsh
2 ~/.zsh/peco-scripts
3 ~/Documents/workspace
4 ~/dotfiles
開く
cdr 3こんな感じですね。
これだけじゃイチイチ開く前に確認しないといけないので peco で選択したいですね。
function peco-cdr() { local selected_dir=$(cdr -l | awk '{ print $2 }' | peco) if [ -n "$selected_dir" ]; then BUFFER="cd ${selected_dir}" zle accept-line fi zle clear-screen } zle -N peco-cdr2行目で何をしているか。
シンプルなコマンドの組み合わせで凄く便利に!cdr -l↑を awk でディレクトリ名だけ抜き出して
1 ~/.zsh
2 ~/.zsh/peco-scripts
3 ~/Documents/workspace
4 ~/dotfiles
cdr -l | awk '{ print $2 }'peco で選択して cd する。
~/.zsh
~/.zsh/peco-scripts
~/Documents/workspace
~/dotfiles
これなら自分でも何か作れそうでワクワクします。