问题描述
函数如下所示:
function mydir -d "Navigate to mydir and its subdirectories from anywhere"
cd $HOME/some/path/mydir/$argv
end
该功能运行良好,但我想添加制表符补全。我目前有这个用于制表符完成:
complete --no-files --exclusive --command mydir --arguments "(__fish_complete_directories)"
问题在于,这将制表完成到当前工作目录中的目录。 相反,我希望它对 $HOME/some/path/mydir/
中的目录进行制表符补全。我在文档中找不到可以帮助我完成此操作的示例或标志。
我不太了解鱼,但我认为一种方法是手动遍历这些目录并将它们添加为选项,但感觉不对,无论如何我都在为该实现而苦苦挣扎。
解决方法
老实说,您的“遍历这些目录”对我来说似乎是最“像鱼一样”的方式,但鉴于有人已经经历了创建和调试现有 __fish_complete_directories
({{3 }}),我想我只是将它用作您自己的完成功能的起点。
在我看来,您可以在“不存在的命令黑客”之前添加 pushd $HOME/some/path/mydir
,然后在末尾添加 popd
。