我最近开始使用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
或cdr
;您可以始终cdr
对所有事物使用 。参见http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Configuration-2了解更多信息。
我怀念的一件事是
popd
,它的意思是“我已经不再使用这个目录了,请把我放回到原来的位置,并从历史记录中删除这个条目。”
小修正:popd
不会从中删除目录历史,它将其从目录堆栈。