いくつかのtcsh完了設定をzshに移行しようとしましたが、文書内のいくつかの内容が失われました。私が望むのは、2つの方法のうちの1つで議論を完了することです。現在完成したい単語にaが含まれていない場合は、/
文字列セットの1つでなければなりません。含まれている場合は/
ディレクトリでなければなりません。
これ:
_foo() {
_arguments -C '1:Name:(Name1 Name2 Name3)' '1:Directory:_path_files -/'
}
同じパラメータを2回指定できないため、機能しません。遊んでた_regex_arguments
けど意味のある行動が得られなかったから何か抜けたらしい
答え1
私は最終的に:
#compdef foo
_foo() {
local curcontext="$curcontext" state line
typeset -A opt_args
_arguments -C '-a' '-b' '-c' '-d' '1: :->name'
case $state in
name)
case $words[2] in
*/*)
_arguments '*:directory:_path_files -/'
;;
*)
_arguments '*:name:(Name1 Name2 Name3)'
;;
esac
esac
}
_foo "$@"
しかし、これが最善の解決策であるかどうかはわかりません。具体的には、いくつかの例の使用法をコピーしましたが、$words
ドキュメントでは見つかりませんでした。