
我最近開始使用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
。那你就不需要考慮是否使用cd
or cdr
;您可以隨時用於cdr
所有用途。看http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Configuration-2了解更多。
我懷念的一件事是
popd
,它基本上意味著“我已經不再使用這個目錄了,把我放回原來的位置並刪除歷史記錄中的這個條目。”
小修正:popd
不會從中刪除目錄歷史,它將其從目錄堆疊。