2013-10-13 2 views
2

Я хочу создать пользовательскую команду, которая имеет первый аргумент в качестве регулярного выражения &, нажимая TAB после ввода регулярного выражения, откроет меню автозаполнения со всеми файлами, соответствующими шаблону.Доступ к аргументу команды в функции автозаполнения в zsh

, если я назову свою команду vimf (то есть ВИМ найти) и писать автозаполнения функции, как:

#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 

Я попробовал его на моем терминале, он работает, но, конечно, может занять много времени, чтобы выполнить, если ваш делать это с корнем. Enjoy :)

Смежные вопросы