我想调整zsh以便我可以完成标签:
myprog <tab>
使用*.foo
中的所有~/somedir
个文件,但要使其显示而不 .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
文件都列出了是否包含其扩展名)。有没有办法解决这个问题?
答案 0 :(得分:2)
我认为您需要设置file-patterns
样式,可能使用'%p:globbed-files'
。