2013-10-13 49 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 

我嘗試了我的終端上,它的工作原理,但如果你這樣做從根本上當然也需要很長的時間來執行。 享受:)