在zsh中访问auto-completion函数中的命令参数

时间:2013-10-13 21:33:36

标签: autocomplete zsh

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

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

#compdef vimf

_arguments "1: :_files -g \"**/*.conf\""\

在上面的自动完成功能中,键入$ vimf,在自动完成菜单中列出以.conf结尾的所有文件。现在,我希望从命令的第一个参数中获取此部分.conf。因此,如果我输入类似vimf *.pp的内容,我希望它只搜索以*.pp结尾的文件。

我该如何做到这一点?在编写自动完成函数时如何使用命令的参数?

1 个答案:

答案 0 :(得分:0)

为此,您需要使用设置为命令行内容的words数组。

从此,您可以通过访问正确的索引来检索文件类型,并使用前缀。 (这由#compdef vimf

完成

结果如下:

#compdef vimf

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

我在我的终端上尝试过它,它可以工作,但是如果你从根本上做这件事,当然可能需要很长时间才能完成。 享受:)