fish shell 目录堆栈

fish shell directory stack

在 zsh 中有一个选项可以将每个访问过的目录自动推送到目录堆栈 (setopt auto_pushd),由 dirs 表示。我刚切换到 fish 并意识到没有这样的默认选项。此外,当尝试访问 dirs 时,它只是填充了 pwd 的当前输出。有没有可能在鱼中启用这种行为?

当然可以选择编写自己的 cd 函数,以便每次 cd 进入文件夹时调用 pushd,但因为我也在切换目录,只是使用路径作为命令不会那么有用。

所以基本上每次我当前的工作目录改变时我都可以调用一个函数吗?

每次目录更改时,您都可以运行一个函数,如下所示:

function myfunc --on-variable PWD
    echo Changed!
end

但是! fish 的 cd 默认情况下是一个管理目录堆栈的函数包装器。 (你可以通过运行宁functions cd看到它的胆量。)

您可以使用 prevdnextd 在目录历史记录中来回移动。还有 shorthand cd - 跳转到您所在的最后一个目录。