类似于 $CDPATH 的东西适用于所有 bash 命令

类似于 $CDPATH 的东西适用于所有 bash 命令

我试图弄清楚是否有一种方法可以$CDPATH为每个命令行工具工作。目前,我的主目录中有一个名为的目录,src/其中包含我的所有项目。这样我就可以cd <foo>从任何目录输入内容,而不必cd ~/src/foo每次都输入内容。

我希望能够做类似的事情vim foo/bar.c,让 bash 自动弄清楚我的意思。此外,我希望能够让它为vim foo/<Tab>我提供有关我想要通过自动完成编辑的内容的建议,并且我还希望能够让它为我vim fo<Tab>自动完成其余部分。foo

是否有一个预先存在的自动完成脚本可以实现类似的功能?我尝试过自己制作一个,但它并没有达到我想要的效果。如果可能的话,我还希望它能够自动完成子目录,例如foo/baz/thing.c.

谢谢!

答案1

正如我所评论的,我认为没有一种简单的方法可以对任何命令透明地执行此操作。

您可以创建一个包装脚本并将其命名为 ,f这样您就可以执行以下操作

f() {
    local command=$1; shift
    local files=() arg file
    for arg in "$@"; do
        file=$(some method to look up the current file in $CDPATH)
        files+=("$file")
    done
    "$command" "${files[@]}"
}

f vim foo.c bar.h

当然,这不知道选项或非文件名参数(即这不允许执行grep -i pattern foo.c),并且您必须考虑如果在 CDPATH 目录中找不到该参数该怎么办。

相关内容