2010-03-23 2 views
3

는 내가이 완료 탭을 할 수 있도록 zsh을을 조정하려면 : ~/somedir의 모든 *.foo 파일을 사용zsh 완료에서 파일 확장명을 제거하는 방법은 무엇입니까?

myprog <tab> 

하지만 그들에게.foo 확장자가없는 를 표시 있도록 있습니다.

이렇게 할 방법이 있습니까?

#compdef myprog 
typeset -A opt_args 
local context state line 
local -a mydirs 
mydirs="(. ~/somedir)" 

_arguments -s -S \ 
    "*:name:->foos" \ 
    && return 0 

case $state in 
    (foos) 
     _files -W ${mydirs} -g '*.foo(:r)' && return 0 
    ;; 
esac 

return 1 

그러나,이 디스플레이는 모든 파일의 출력을 두 배 (즉, 각 .foo 파일의 확장자와없이 나열됩니다) :

이것은 내가 지금까지있는 것입니다. 이 주위에 어떤 방법이 있습니까?

답변

2

아마도 을 사용하여 file-patterns 스타일을 설정해야한다고 생각합니다.

+0

이 답변을 조금 연장 하시겠습니까? zsh의 완성 구문에 완전히 익숙하지 않아서 시작해야 할 부분을 추론하는 데 어려움을 겪고 있습니다. – Michael

+0

Nvm, 그것을 얻었습니다 :'zstyle ': 완료 : *'파일 패턴 '% p : globbed-files :''내 .zshrc에 속합니다. 감사! – Michael