単一のフォーマットパラメータを使用してコマンドのzsh補完を設定したいと思いますscheme:parameter
。
可能なすべてのシナリオと可能なすべての引数を返すコマンドがあるとします。コロンが入力されるまでスキームリストで完了し、引数リストで完了する完了関数は何ですか?
単一のリストで簡単に実行できます。たとえば、次のようになります。
function _prmt() { _alternative 'args:args:($(prmt --completions))' }
しかし、区切り文字を認識する方法がわかりません。
答え1
:
1つのアプローチは、次のようにさまざまな動作を見つけて表示することです。
#compdef foo
# put this file into a $fpath directory (typically one you create
# and prefix to that array) then `rm ~/.zcompdump && exec zsh`
# until work-making (a temporary `print -z "foo "` in your .zshrc
# may also speed debugging, as then you can go directly to the
# mashing-of-tab stage)
local curcontext="$curcontext" state line
local suf
typeset -A opt_args
_arguments -C -s \
'1: :->dofoo' \
&& return 0
case "$state" in
dofoo)
if compset -P '*[:]'; then
_values "parameters" $(_call_program getparam ls /)
else
if compset -S '[:]*'; then
suf=()
else
suf=( -qS ':' )
fi
_wanted "schemes" expl "scheme" compadd $suf[@] $(_call_program getscheme ls /)
fi
;;
esac
ビットls /
は適切な命令でなければならず、これらのプログラムがエクスポートする内容などに応じて、出力をリストに適切に分割するために必要な追加の複雑さがあります。
学習方法: 主にcd $fpath[-1]
完了処理があると完了セクションを見てください。_chown
_users
:
追加情報。