shell ZSH等价于Bash '_command'完成

bmvo0sr5  于 2023-02-16  发布在  Shell
关注(0)|答案(1)|浏览(141)

给出一个示例 Package 器shell函数:

app() {
    setsid "$@"
}

在Bash中,您可以执行complete -F _command app来自动为所有命令提供app完成(不仅是路径上的二进制文件,还有后面的参数)。
你怎么能在ZSH中做到这一点?我有一些_normal-command-line-的线索,但我一直无法找出正确的命令,把一个.zshrc
更新:
只是想记录一些有趣的东西,这会产生一个SIGSEGV:

autoload -U compinit && compinit
compdef _normal app

# Attempting tab complete of app: _normal:1: maximum nested function level reached; increase FUNCNEST?

FUNCNEST=999

# Attempt tab complete of app again
# ZSH crashes (see coredumpctl)
mmvthczy

mmvthczy1#

我想明白了:

# Set up autocomplete
_app() {
    shift words
    (( CURRENT-- ))
    _normal
}
autoload -U compinit && compinit
compdef _app app

这有点像这个问题的重复:How do I dynamically select a completion function in zsh?
如果有人知道一个更短的解决方案,如什么bash有,然后请回答,因为这将是很好的。

相关问题