gpt4 book ai didi

autocomplete - zsh 函数 : forward completion to subfunction

转载 作者:行者123 更新时间:2023-12-05 01:16:27 24 4
gpt4 key购买 nike

很多时候,我最终会围绕现有函数编写包装函数,例如:

function gl {
some_computed_stuff=...
git --no-pager log --reverse $some_computed_stuff "$@"
}
function m {
make "$@" && notify-send success || notify-send failed
}

我知道别名保持自动完成,但有时需要函数,在这种情况下自动完成会丢失。
例如在这里我想保留 git log完成我的函数 glmake完成 m .

我尝试添加 compctl -K _git gl但没有提出任何建议。它无论如何都行不通,因为我必须以某种方式找到如何提供 log论据 _git自动完成脚本也是如此,所以我的问题是:

有没有办法让 ZSH(也包括 bash)理解输入 gl完全等同于 git log ?类似(仅适用于 ZSH):
compctl 'git log' gl
compctl 'make' m

最佳答案

对于 zsh,您可以使用 compdef 创建一个新的完成。功能。

在其基本形式中,它将完成功能与单词相关联。假设 zsh 已经内置了很多完成,你可以重用它们。例如,对于 m问题的功能:

$ compdef _make m

根据文档,如果在完成功能中定义了特定服务,您还可以为特定服务定义完成。同样,因为 zsh 带有 _git完成并且它已经定义了 git-log服务,一个 gl问题中的功能可能会自动完成:
$ compdef _git gl=git-log

在 Linux 上,您可以在 /usr/share/zsh/functions/Completion/Unix/ 中看到现有的完成实现。 .您可以阅读完成实现以查看它们定义了哪些服务。

关于autocomplete - zsh 函数 : forward completion to subfunction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40909400/

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