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。然后您无需考虑是否使用cdcdr;您可以始终cdr对所有事物使用 。参见http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Configuration-2了解更多信息。


我怀念的一件事是popd,它的意思是“我已经不再使用这个目录了,请把我放回到原来的位置,并从历史记录中删除这个条目。”

小修正:popd不会从中删除目录历史,它将其从目录堆栈

相关内容