我希望创建一个自定义命令,它的第一个参数是正则表达式&键入正则表达式后按TAB
将打开一个自动完成菜单,其中包含与该模式匹配的所有文件。
如果我命名我的命令vimf
(意思是vim find)并编写自动完成功能,如:
#compdef vimf
_arguments "1: :_files -g \"**/*.conf\""\
在上面的自动完成功能中,键入$ vimf,在自动完成菜单中列出以.conf
结尾的所有文件。现在,我希望从命令的第一个参数中获取此部分.conf
。因此,如果我输入类似vimf *.pp
的内容,我希望它只搜索以*.pp
结尾的文件。
我该如何做到这一点?在编写自动完成函数时如何使用命令的参数?
答案 0 :(得分:0)
为此,您需要使用设置为命令行内容的words
数组。
从此,您可以通过访问正确的索引来检索文件类型,并使用前缀。 (这由#compdef vimf
)
结果如下:
#compdef vimf
_arguments "1: :_files -g \"**/*.${words[2]##*.}\""\
&& return 0
我在我的终端上尝试过它,它可以工作,但是如果你从根本上做这件事,当然可能需要很长时间才能完成。 享受:)