How to remove the file extension in a zsh completion?
I want to adjust zsh so that I can开发者_JS百科 tab complete:
myprog <tab>
using all *.foo
files in ~/somedir
, but have it so that it displays them without the .foo
extension.
Is there any way to do this?
This is what I have so far:
#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
However, this displays double the output for every file (that is, each .foo
file is listed with and without its extension). Is there any way around this?
I believe you need to set the file-patterns
style, probably using '%p:globbed-files'
.
精彩评论