如何获得别名以正确完成?

约书亚脸颊

别名不完整的别名

我有一堆别名,例如jfor jobshere),还有“ alias command”,例如gsfor git statushere)。

我希望他们对他们所混叠的东西具有制表符补全。这样j -<TAB>就可以完成jobs -<TAB>并推荐--command,-pid等。


Idea1:从别名命令中提取定义:

如果没有任何内建方法可以将其j视为jobs,那么也许有一种方法可以动态地进行处理?基于此评论文档,看来我应该能够执行以下操作:

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

对于一些虚构的标志“ --definitions-for”,该标志仅输出为获得当前定义而放置的所有标志(我发现了一个complete_print与我想要的功能非常接近的功能

Idea2:交换命令行:

尽管这对于j-> jobs可能是可行的,但我开始四处张望,发现git status completes看来这可能很困难(除非我可以在-n检查条件之前将其扩展)。

好吧,这里有一个--do-complete标志,上面写着“打印指定命令行的所有补全”。

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

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

荒谬的鱼

目前尚不直接支持此功能,但是非常需要此功能。请参见fish的错误跟踪器中的问题393

迄今为止已知的最佳解决方案来自maxfl的评论

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别名。最终,这将是您可以直接设置的内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章