gpt4 book ai didi

git - 如何让我的别名正确完成?

转载 作者:太空狗 更新时间:2023-10-29 14:46:26 26 4
gpt4 key购买 nike

不完整的别名

我有一堆别名,比如 j对于 jobs ( here ),以及像 gs 这样的“别名命令”对于 git status (here)。

我希望他们使用制表符完成他们正在别名的事情。所以j -<TAB>会像jobs -<TAB>一样完成并推荐 --command、--pid 等。


思路1:从别名命令中提取定义:

如果没有内置的东西告诉它处理j作为jobs ,那么也许有办法动态地做到这一点?基于this commentthe docs ,看来我应该能够执行以下操作:

complete --command j (complete --definitions-for jobs)

对于一些虚构的标志“--definitions-for”,它只输出为获得当前定义而放入的任何标志(我找到了一个函数 complete_print ,它非常接近我想要的)

思路2:换掉命令行:

虽然这对于 j->jobs 可能是可行的,但我开始四处寻找并找到了 git status completions .看起来可能很难(除非我可以在检查 -n 条件之前展开它)。

嗯,有一个--do-complete标志,上面写着“打印指定命令行的所有完成”也许是沿着这些线:

complete -c gs --do-complete "git status -"

不过,我实际上不知道如何使用 --do-complete 来做任何事情:/

最佳答案

这还没有直接支持,但非常需要。参见 issue 393在 fish 的错误跟踪器中。

目前已知的最佳解决方案来自 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 作为jobs 的别名。最终这将是您可以直接设置的内容。

关于git - 如何让我的别名正确完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24603881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com