基于当前$ PWD

时间:2019-03-09 23:06:59

标签: zsh

因此,我编写了一个类似于普通cd的函数,并且可以导航回到当前$PWD中的任何目录。

function ccd() {
    local next_dir=$1
    cd $next_dir >/dev/null 2>&1
    if [[ $? != 0 ]]; then
        if [[ ${next_dir: -1} == '/' ]]; then   ## delete trailing "/" if present
            next_dir=${next_dir: : -1}
        fi
        if [[ $PWD == *$next_dir* ]]; then
            local pwd_part=$(pwd | nawk -F "/$next_dir/" '{print $1}')
            cd $pwd_part'/'$next_dir
        else
            echo "ccd: no such file or directory: $next_dir"
        fi
    fi
}

所以现在我可以用ccd foo/qux/bar/baz/而不是
ccd qux

cd ../..写到CD,然后再写回qux。

我现在想要实现的是,在上面的示例中,启用了自动完成功能(基于当前的$PWD),即ccd q<TAB>应该扩展为ccd qux

在ZSH中这可能吗?我的直觉说应该有可能,但我不知道如何。

0 个答案:

没有答案