私のスクリプトは、オプションのパラメータ(-i、-w)と指定されたディレクトリのファイル名を使用します。 zshに通常のファイル(ディレクトリやシンボリックリンクではない)のみを完了するように指示するにはどうすればよいですか?$HOME/data
これは私のものです/usr/share/zsh/functions/Completion/Unix/_my-script
。
#compdef my-script
_my-script() {
integer ret=1
local -a args
args+=(
'-i[case insensitive]'
'-w[match whole words]'
)
_arguments $args[@] && ret=0
return ret
}
_my-script
どこに追加し、通常のファイルのみを完了するように_files
指定するには?zsh
$HOME/data
#compdef my-script
また、最初の行はコメントではないようです。完成したファイルにコメントを追加するにはどうすればよいですか?
答え1
ファイル名はパラメータ1なので、1
次のように渡されます。_arguments
。位置1はパラメータをとるため、パラメータは次_arguments
のようになります。完了するファイルを指定するには、次のオプションを渡します。1:description:code to do the completion
_files
、その一部は以下から継承されます。_path_files
:含めることができる特定のパターンと一致するように-W
指定されたディレクトリ内で完了します。-g
グローバル予選ファイル形式を制限します。ディレクトリは常に提供され、ディレクトリのパススルーが許可されていないとディレクトリは提供されませんので、代わりに_path_files
使用してください。_files
_files
_path_files
-g
args=( …
'1:thing:_path_files -W ~/data -g "*(.)"'
)
レビューを書きたい場合は、一般的な方法で書いてください。#compdef …
最初の行は、ファイルにが含まれていることをzshに伝える魔法のコメントです。初期化ファイルにmy-script
あるのと同じです。compdef _my-script my-script
最初の行にする必要があります。