bag*_*age 3 zsh autocomplete bash-completion zsh-completion
很多时候我最终会围绕现有函数编写包装函数,例如:
function gl {
some_computed_stuff=...
git --no-pager log --reverse $some_computed_stuff "$@"
}
function m {
make "$@" && notify-send success || notify-send failed
}
Run Code Online (Sandbox Code Playgroud)
我知道别名保持自动完成,但有时需要函数,在这种情况下自动完成会丢失.例如,我想继续git log完成我的功能gl或make完成m.
我试图添加,compctl -K _git gl但没有提出任何建议.它无论如何都行不通,因为我必须以某种方式找到如何log为_git自动完成脚本提供参数,所以我的问题是:
有没有办法让ZSH(还有bash)明白打字gl是完全相同的git log?像(仅适用于ZSH):
compctl 'git log' gl
compctl 'make' m
Run Code Online (Sandbox Code Playgroud)
对于zsh,您可以使用compdef函数创建新的完成.
在其基本形式中,它将完成函数与单词相关联.如果zsh带有许多已经内置的完成,那么可以重用它们.例如,对于m来自问题的函数:
$ compdef _make m
Run Code Online (Sandbox Code Playgroud)
根据文档,如果在完成功能中定义了特定服务,您还可以定义特定服务的完成.同样,由于zsh带有_git完成并且它已经定义了git-log服务,gl因此问题中的函数可以自动完成:
$ compdef _git gl=git-log
Run Code Online (Sandbox Code Playgroud)
在Linux上,您可以看到现有的完成实现/usr/share/zsh/functions/Completion/Unix/.您可以阅读完成实现以查看它们定义的服务.
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |