Программирование индивидуального автодополнения вкладок для zsh

Извините, если мой google fu слишком слаб, но: я просто хочу настроить zsh, чтобы я мог завершить вкладку

someappname -s

используя содержимое (имена файлов) ~/somedir

Например:

someapp -s f<tab>

должен циклически проходить завершения на основе файлов, начинающихся с буквы f в ~/somedir . Так что я могу получить командную строку вроде: «someapp -s foobar».


person Pistos    schedule 14.07.2009    source источник


Ответы (2)


Более простой подход:

compdef "_files -W ~/somedir -/" someappname
person zeekay    schedule 05.01.2012
comment
Если someappname принимает в качестве аргументов только каталоги, вы можете использовать _directories вместо _files. - person Manki; 30.08.2012

Что ж, я разобрался с этим: (источник на github)

#compdef diakonos

typeset -A opt_args
local context state line
local sessiondir
sessiondir=${HOME}/.diakonos/sessions

_arguments -n -s -S \
  "-s[specify session]:session:_files -W $sessiondir" \
  "*:file:_files" \
  && return 0

return 1

Я ссылался на http://www.linux-mag.com/id/1106 ( [бесплатно] требуется регистрация для чтения), и получил помощь от #zsh на freenode.

person Pistos    schedule 14.07.2009
comment
Вы также можете прочитать книгу Оливера Киддла, Джерри Пика и Питера Стивенсона From Bash to Z Shell. - person Telemachus; 23.07.2009