2013-10-13 28 views
2

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

,如果我的名字我的命令vimf(意为VIM FIND)和写这样的自动完成功能:

#compdef vimf 

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

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

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

+0

嘿@shadyabhi,你有没有尝试过的机会呢? :) – AdrieanKhisbe

回答

0

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

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

下面是结果:

#compdef vimf 

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

我尝试了我的终端上,它的工作原理,但如果你这样做从根本上当然也需要很长的时间来执行。 享受:)