我试图弄清楚是否有一种方法可以$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 目录中找不到该参数该怎么办。