如何在zsh完成中删除文件扩展名?

时间:2010-03-23 15:28:11

标签: string zsh file-extension tab-completion

我想调整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文件都列出了是否包含其扩展名)。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

我认为您需要设置file-patterns样式,可能使用'%p:globbed-files'