当且仅当路径是 `../` 的集合时,autocd

当且仅当路径是 `../` 的集合时,autocd

我正在使用 zsh 并且我已将其别名..为。当且仅当输入的路径是或 的重复时,cd ..我才希望 zsh转到路径。cd..../

以下应该自动cd

..
../
../../../../
../../..

这些不应该自动cd

../../mydir
mydir
/dir

我如何配置 zsh(也许还有 bash)以使其自动cd如此?

答案1

您可以使用“DEBUG”陷阱拦截命令,例如模拟“autocd”:

TRAPDEBUG() {
    if [[ "$ZSH_DEBUG_CMD" =~ ^\\.\\.(/\\.\\.)*/?$ ]]; then
        : "Emulate autocd"
        cd "$ZSH_DEBUG_CMD"
        echo "Now in $PWD"
        : "Cancel the original command"
        set -e
    fi
}

相关内容