Autocomplete 访问命令';zsh中自动完成函数中的s参数

Autocomplete 访问命令';zsh中自动完成函数中的s参数,autocomplete,zsh,Autocomplete,Zsh,我希望创建一个自定义命令,该命令的第一个参数为regex&键入regex后按TAB,将打开一个自动完成菜单,其中包含与模式匹配的所有文件 如果我将命令命名为vimf(意思是vim find)并编写如下自动完成功能: #compdef vimf _arguments "1: :_files -g \"**/*.conf\""\ 在上述自动完成功能中,键入$vimf,列出自动完成菜单中以.conf结尾的所有文件。现在,我希望这部分.conf取自命令的第一个参数。因此,如果我键入类似的内容:vim

我希望创建一个自定义命令,该命令的第一个参数为regex&键入regex后按
TAB
,将打开一个自动完成菜单,其中包含与模式匹配的所有文件

如果我将命令命名为vimf(意思是vim find)并编写如下自动完成功能:

#compdef vimf

_arguments "1: :_files -g \"**/*.conf\""\
在上述自动完成功能中,键入$vimf,列出自动完成菜单中以
.conf
结尾的所有文件。现在,我希望这部分
.conf
取自命令的第一个参数。因此,如果我键入类似的内容:
vimf*.pp
,我希望它只搜索以
*.pp
结尾的文件


我怎样才能做到这一点?编写自动完成函数时,如何使用命令的参数?

为此,需要使用设置为命令行内容的
单词
数组

从这里,您可以通过访问良好的索引来检索文件类型,并指定前缀。(这由
#compdef vimf
完成)

结果如下:

#compdef vimf

_arguments "1: :_files -g \"**/*.${words[2]##*.}\""\
           && return 0

我在我的终端上试过了,它可以工作,但是如果你用根来做的话,当然要花很长时间才能完成。享受:)

hey@shadyabhi,你增加了尝试的机会吗?:)