popd 用於 zsh 中基於 cdr 的目錄管理

popd 用於 zsh 中基於 cdr 的目錄管理

我最近開始使用cdr用於zsh記住最近的目錄。我以前用過pushd之類的。我懷念的一件事是popd,它基本上意味著“我已經用完了這個目錄,把我放回原來的位置,並刪除堆疊中的這個條目。”

可以用 完成類似的語意cdr嗎?

編輯:將“歷史”更改為“堆疊”。

答案1

您可以輸入

cdr -p $PWD

cdr還會修剪清單中您所在的目錄。若要刪除另一個目錄,只需替換$PWD為要刪除的目錄的絕對路徑名即可。或者,如果您想要刪除一整套目錄,您也可以在參數中使用 glob 模式。並且cdr -p在進行任何更改之前,它會向您顯示您的操作的結果將會是什麼,並會要求您確認,因此您不必擔心「不小心整件事」。看http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Options-2了解更多。


若要返回到我們所在的上一個目錄,請執行下列操作

cd -

您可以將這兩者組合在一個函數中:

cdpop() {
  local dir=$PWD

  # `cdr` without arguments does the same `cdr 1`: Go back to the previous 
  # dir.
  cdr

  # `-P` does the same as `-p`, but is silent and doesn't ask for 
  # confirmation.
  cdr -P $dir
}

順便說一句:您可以設定cdr也執行cd命令。若要啟用此功能,請將以下內容放入您的~/.zshrc文件中:

zstyle ':chpwd:*' recent-dirs-default true

然後,您傳遞給的任何cdr不特定的參數cdr都會傳遞給cd。那你就不需要考慮是否使用cdor cdr;您可以隨時用於cdr所有用途。看http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Configuration-2了解更多。


我懷念的一件事是popd,它基本上意味著“我已經不再使用這個目錄了,把我放回原來的位置並刪除歷史記錄中的這個條目。”

小修正:popd不會從中刪除目錄歷史,它將其從目錄堆疊

相關內容