2

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

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

#compdef vimf

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

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

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

4

1 回答 1

0

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

从中,您可以通过访问好的索引检索文件类型,并 troncate 前缀。(这是由 完成的#compdef vimf

结果如下:

#compdef vimf

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

我在我的终端上尝试过,它可以工作,但如果你是通过 root 执行此操作,当然可能需要很长时间才能执行。 享受 :)

于 2015-02-27T13:59:46.583 回答