我为j
jobs
提供了gs
的一些别名,git status
提供了j -<TAB>
的“别名命令”({{3} }})。
我希望他们让选项卡完成他们别名的东西。因此,jobs -<TAB>
将像j
一样完成并推荐--command, - pid等。
如果内置任何内容告诉它将jobs
视为complete --command j (complete --definitions-for jobs)
,那么也许有一种方法可以动态地执行它?基于here和here,我似乎应该能够执行以下操作:
-n
对于某些组成标志“--definitions-for”,它只输出放入的任何标志以获取当前定义(我找到了一个非常接近我想要的函数this comment)
虽然这可能适用于j-&gt;工作,但我开始环顾四周并找到the docs。看起来可能很困难(除非我在检查--do-complete
条件之前扩展它)。
好吧,有一个complete -c gs --do-complete "git status -"
标志,上面写着“打印指定命令行的所有完成”也许是这些内容:
{{1}}
我实际上无法弄明白如何使用--do-complete做任何事情:/
答案 0 :(得分:3)
目前还没有直接支持,但这是非常需要的。请参阅fish's bug追踪器中的issue 393。
目前已知的最佳解决方案来自maxfl's comment:
function make_completion --argument alias command
complete -c $alias -xa "(
set -l cmd (commandline -pc | sed -e 's/^ *\S\+ *//' );
complete -C\"$command \$cmd\";
)"
end
然后,您可以运行make_completion j jobs
将j替换为作业。最终这将是你可以直接设置的东西。