#author("2026-01-03T09:53:22+09:00","","")
#author("2026-01-03T09:55:37+09:00","","")
[[OSS]]

* pushd 補強 [#kd71beaf]

- .zshrc
-- autoload -Uz pd save_dirs restore_dirs
- プログラム
-- /Users/ogawa/.zsh/functions
- 補強機能
-- save機能
-- pds select 機能:誰かの真似
-- pdr : dirs -v
-- pd : 同じディレクトリを積まない
-- pdu: ユニーク

* コード [#z9c1d445]

/Users/ogawa/.config/zsh/features/dirstack.zsh

/Users/ogawa/.zsh/functions/pd

 # pd function (duplicate directory skip)
 pd() {
     pd_main() {
         pushd "$@" > /dev/null || return 1
         [[ $# -eq 0 ]] && return 0 # 引数なし
 
         local -a stack
         stack=("${(@f)$(builtin dirs -p)}")
         local cwd="${stack[1]}"
         shift stack # 先頭をpop
         # print -l "pd print:"
         # typeset -p cwd stack
 
         local iStack=0
         for d in "${stack[@]}"; do
             if [[ "$d" == "$cwd" ]]; then
                 popd >/dev/null || return 1
                 (( iStack == 0 )) && return 0 # カレントと同じ
                 pushd +$iStack >/dev/null
                 break
             fi
             ((iStack++))
         done
     }
 
     pd_main "$@"
     local return_code=$?
     dirs -v
     return $return_code
 }

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS