Shell

zsh 完成:僅完成給定路徑中的文件,而不是目錄

  • August 21, 2021

我只需要完成給定路徑中的第一級(深度 1)文件,並忽略目錄。我嘗試指定-g '*(.)',但這似乎沒有效果:

#compdef foo

local state

_arguments -S : \
   '-i' \
   '-l' \
   '-w' \
   '1: :->myfiles'

case $state in
   myfiles)
       _files -W /foo/bar -g '*(.)'
       ;;
esac

它仍然顯示文件和目錄。

我怎樣才能只顯示第一級文件?我對可能在更深層次的目錄中的文件不感興趣。

_arguments -S : \
   '-i' \
   '-l' \
   '-w' \
   '1: :{
     _wanted all-files expl descriptiongoeshere compadd - /foo/bar/*(^/:t)
   }'

引用自:https://unix.stackexchange.com/questions/665578